MySQL 表:姓名、薪水、子女、兄弟、年龄
我正在尝试检索年龄> 30 的薪水,子女和兄弟中具有最大值的人的姓名。注意:每个名称都是唯一的。
为了实现这一点,我遍历了这个数组的所有列:
$columns = array('salary','childrens','brothers')
foreach($columns as $value){
$result=mysql_query("SELECT `name`, `$value` FROM table_name WHERE `age`>30 ORDER BY `$value` ASC LIMIT 1");
while($rows=mysql_fetch_array($result,MYSQL_ASSOC)){
echo $rows[name];
};
};
一切正常,但我还想计算每个名称被检索的次数(回显)。即: Max 的薪水最高,兄弟数量最多,所以他的名字被检索了 2 次。Loren 只有最多的孩子,所以他的名字被检索了 1 次。Jason 从未被召回,所以对他来说是 0。
我试过这个:
$i=0;
$columns = array('salary','childrens','brothers')
foreach($columns as $value){
$result=mysql_query("SELECT `name`, `$value` FROM table_name WHERE `age`>30 ORDER BY `$value` ASC LIMIT 1");
while($rows=mysql_fetch_array($result,MYSQL_ASSOC)){
echo "The person who has the max amount of $value is $rows[name]";
$count[$rows[name]] = $i++;
};
};
但它没有按预期工作,它计算每个名称出现在每列中的次数,而不考虑它是否具有最大值。
任何帮助都将不胜感激。ps:如果您也可以改进代码以检索最大值,我将不胜感激。
更新:
每个表的查询应输出以下内容:
Name salary
Max 2000
--
Name childrens
Loren 4
--
Name brothers
Max 3
$count 数组应该是: $count = array('Max'=>2,'Loren'=>1,'Jason'=>0,'etc'=>0);