2012-03-24 10 views
2

今日、私のシステムの顧客はアイテムを買うことができる、私は顧客IDと売り手の数を1つのテーブルに保存する(在庫管理)それは私のシステムで最も多くのアイテムを買った人) 私は各顧客が購入したアイテムの数を調べるコードを書いたが、どうすればいいのか分からないこのコードを参照してください 最高の顧客を示しています。MySQLのSUMの最大値を見つけよう

$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

これには2つの方法があります(私が考えることができます)。どちらもSQLクエリの変更が必要です。

Sol。 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

おかげで、私は前に、それは私のシステムでの作業をdosen't第一の方法を書いた、ドン」理由は分かっていますが、第二のものは私のために新しいものです。ありがとうございます。それは動作します.... – sahapersian

+2

'MAX(SUM())'は期待どおりに動作しません。あなたの答えを編集してください。 –

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

+0

購入したアイテムの数が等しい複数の最高の顧客がいる場合、このコードはそれらのすべてを表示します。 hjpotter92によるものではないでしょう。 – bazzilic

関連する問題