2012-03-24 43 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