2014-01-15 68 views
1

在我的數據庫中,我有一個名爲foodgroups的表中的某些食物類別。因此,我在與這些類​​別相關的不同表格中列出了食品項目。此外,我創建了一個包含訂單的訂單表格,以及一個定義訂單的「訂單食品」表格,根據訂單中有多少產品屬於訂單。找不到SQL查詢

我的目的是展示每類食物中銷售最多的食品。所以我想拿出一個欄目,旁邊有一個與這個類別的食品項目最賣的食品相關的欄目。

Select foodgroups.name, SUM(orderfood.fooditem_ID*orderfood.amount) 

FROM orders, orderfood, products, productgroups 

Where productgroups.productgroup_ID=products.productgroup_ID 

AND  orders.order_ID=orderfood.order_ID 

AND  products.product_ID=orderfood.product_ID 

Group by productgroups.productgroup_ID` 

到目前爲止,它不顯示任何錯誤,但我不知道怎麼用才最買來食物中獲取一列旁邊的類別中,它是最買了一臺。也許你可以幫助我,謝謝:)

順便說一句,我正在使用MySQL工作臺。

http://sqlfiddle.com/#!2/4b79c/2

+3

請張貼表模式和樣本數據上sqlfiddle.com – OldProgrammer

+1

你能後的表模式? – mituw16

+0

[鏈接](http://sqlfiddle.com/#!2/4b79c/2)這裏是它的一個妥協版本,但它應該這樣做 – Oli

回答

-1

我認爲你正在尋找的MAX功能。將它添加到你的SELECT語句

Select foodgroups.name, SUM(orderfood.fooditem_ID*orderfood.amount), max(orderfood.amount) 

FROM orders, orderfood, products, productgroups 

Where productgroups.productgroup_ID=products.productgroup_ID 

AND  orders.order_ID=orderfood.order_ID 

AND  products.product_ID=orderfood.product_ID 

Group by productgroups.productgroup_ID` 

應該返回您最訂購食品

+0

我不認爲你完全明白我想要得到什麼: 我想要第一列,顯示有不同的類別, 右邊的列,它旁邊應該給我每個類別是銷售最多的此類別的一種產品。 – Oli

+0

不要鼓勵使用隱式連接 – HLGEM

+0

啊,那就是我所追求的。我有一個類似的代碼做同樣的事情。這是一個彙總查詢,但不是mySql。我自己是一名Oracle人員。 @HLGEM,對不起,如果我因爲鼓勵隱式聯接而被拒絕投票......但是不是抨擊隱式聯接,而是提供一個最佳實踐如何顯示它的例子。這將鼓勵最佳做法。 –