坚持SQL加入查询

时间:2016-11-26 23:06:36

标签: mysql database

我是数据库的新手。我有以下表格

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;

1 个答案:

答案 0 :(得分: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

这假定订单中至少包含一个项目 - 如果您想要满足空订单,请从订单中选择并使用上面的子查询执行左外连接。