2016-11-26 69 views
0

我是數據庫的新手。我有以下表卡在SQL加入查詢

Customer (customer_id, customer_name, city) 
Order (order_id, order_date, customer_id) 
Order_Item (order_id, item_id, quantity) 
Item (item_id, unit_price) 
Shipment (order_id, warehouse_id, ship_date) 
Warehouse (warehouse_id, warehouse_name, warehouse_city) 

所需的查詢是:

  • 寫SQL查詢來獲取項目,每個訂單的總價數。
  • 編寫一個SQL查詢以檢索已從名爲「FridaHouse」的倉庫裝運的訂單的總價格。

這是我第一個查詢嘗試但可以肯定它不工作了

SELECT item.item_id, SUM(item.unit_price * order_item.quantity) AS TOTAL_PRICE 
FROM order_item JOIN item on item.item_id=order_item.item_id; 
+0

你收到的錯誤是什麼?你爲第二個查詢做了什麼? – EGOrecords

+0

正確閱讀要求:「編寫SQL查詢以檢索每件訂單的物品數量和總價格」。每個訂單要顯示一行,每行應包含項目數量和總價格。選擇item_id是沒有意義的。並且你正在加入物品表。它包含你感興趣的內容? –

回答

0

你缺少一個GROUP_BY條款,告訴SQL聚集具有相同的order_id所有行。此外,您應該返回訂單的id,而不是該項目(訂單中可能有不同的項目,因此SQL不知道要返回哪個項目)。減去可能的拼寫錯誤時,第一個查詢應該是這個樣子:

select 
    order_id, 
    sum(quantity) as quantity, 
    sum(unit_price*quantity) as total_price 
from order_item join item on item.item_id = order_item.item_id 
group by order_id 

這是假設以往訂單包含至少一個項目 - 如果要滿足空的訂單,從訂單選擇並執行左外與加盟上面的子查詢。