2012-09-29 77 views
0

我有一個問題,這是我的簡單示意圖:查詢和MySQL的子查詢,顯示客戶購買的產品

relationship diagram http://i45.tinypic.com/121c48m.png

嗯,我嘗試了很多,我不能做什麼,我需要,我需要顯示誰取得了購買,大部分購買的產品在製造每購買客戶的名單,例如

客戶數量1 --->買入:

  • 4雞湯
  • 3肉湯
  • 2蝦湯

客戶編號2 --->買入:

  • 1雞湯
  • 1肉湯
  • 2蝦湯

客戶編號3 --->購買:

  • 4雞湯
  • 8肉湯
  • 1蝦湯

我查詢的結果必然是:

query result http://i45.tinypic.com/2ni9w87.png

請幫我做這個MySQL正確查詢

+0

這看起來像你試圖讓某人爲你做你的功課。 – Starfish

回答

1

我可以想到兩種方法。第一種方法是使用一個子查詢來查詢最流行的項目爲每一位客戶:

SELECT nameCustomer AS customer_name, (
    SELECT idItem 
     FROM detailSale 
     INNER JOIN sales on sales.idDetail = detailSale.idDetail 
     WHERE sales.idCustomer = cliente.idCustomer 
     GROUP BY idItem 
     ORDER BY SUM(amountBuyItem) DESC 
     LIMIT 1 
) 
    FROM cliente 

注意這個查詢是不完整的,因爲它只能說明你的項目的ID,所以你需要加入itemForSale表檢索其名稱。

另一種方法是先從一個查詢,會告訴你所有的物品爲每一個客戶的受歡迎的順序:

SELECT idCustomer, idItem, SUM(amountBuyItem) AS totalBuyItem 
    FROM detailSale 
    INNER JOIN sales on sales.idDetail = detailSale.idDetail 
    GROUP BY idCustomer, idItem 
    ORDER BY idCustomer, idItem DESC 

然後,您可以創建此查詢的集合發現的數最受歡迎的項目,然後回到它找出哪個項目。這具有可能爲每個客戶返回多於一行的缺點。

+0

非常感謝,工作=) – Alberto

相關問題