2012-03-24 44 views
2

好日子家伙 目前我正在做PHP(库存管理)对我的项目,在我的系统客户可以购买的物品,我保存客户ID,并在一个表中出售的商品的数量(称为它销售表)在MySQL中,现在我想展示最好的客户(谁在我的系统中购买了最多的项目) 我写了一个代码来找出每个客户购买了多少项目,但我不知道我可以如何表现出最佳的客户 看到这样的代码:找到总和的MAX在MySQL

$test= "SELECT c_id, SUM(n_sell) FROM sell GROUP BY c_id "; 
$resut = mysql_query($test) or die(mysql_error()); 
while($t = mysql_fetch_array($resut)){ 
    echo "Number of sold: ". $t['SUM(n_sell)'] ." to". $t['c_id'] .":id of customer"; 
    echo "<br />"; 
} 

它显示了我所有的客户提供销售的物品给他们的数字,我需要证明谁拥有销售项目的最大数量的特定客户。 例如,这是我的结果:11〜2:

出售众多客户的ID 出售数量:103至3:客户的ID

,但我想要的东西是只显示:

数卖:103至3:客户

的ID我希望你们能得到我, 谢谢。

回答

1

有针对两种方法(这是我能想到的)。两者都需要改变你的SQL查询。

索尔。 1

$test= "SELECT c_id, MAX(SUM(n_sell)) FROM sell GROUP BY c_id "; 

Sol。 2

$test= "SELECT c_id, SUM(n_sell) FROM sell GROUP BY c_id ORDER BY SUM(n_sell) DESC LIMIT 1"; 

代码的其余部分可能保持不变。

+0

谢谢,我写的第一个方法之前,它这么想的在我的系统工作,不要”不知道为什么,但第二个对我来说是新的,非常感谢。它的工作原理.... – sahapersian 2012-03-24 10:21:06

+2

'MAX(SUM())'不会像你期望的那样工作。请编辑你的答案。 – 2012-03-24 11:21:44

4

试试这个:

$test = "SELECT c_id, MAX(Bought) AS MaxBought FROM (SELECT c_id, SUM(n_sell) AS Bought FROM sell GROUP BY c_id) AS tmp HAVING MAX(Bought) = tmp.Bought"; 
$resut = mysql_query($test) or die(mysql_error()); 
while($t = mysql_fetch_array($resut)){ 
    echo "Number of sold: ". $t['MaxBought'] ." to". $t['c_id'] .":id of customer"; 
    echo "<br />"; 
} 

这里是单独的SQL查询更容易理解:

SELECT c_id, MAX(Bought) AS MaxBought 
FROM (SELECT c_id, SUM(n_sell) AS Bought 
     FROM sell 
     GROUP BY c_id) AS tmp 
HAVING MAX(Bought) = tmp.Bought 
+0

感谢您的明确和完整的答案.... – sahapersian 2012-03-24 10:39:05

+0

如果有几个最好的顾客与等量的购买物品,此代码将显示所有这些。 hjpotter92的那个不会。 – bazzilic 2012-03-24 10:44:28