【发布时间】:2023-02-12 23:57:02
【问题描述】:
目前我正在学习,我收到了编写查询的任务(加入 4 个表:人员、货物、订单和订单详细信息)。所以主表 Order_details 有两列:Order_id 和 Good_id,以便可以在一个订单中包含许多商品(例如,id = 1 的订单在 Order_details 表中有 3 行,但每行具有不同的商品主键)。 所以问题是我不知道任何其他可能的方法(除了使用 group by、distinct 或 over() 之外)只接收 Order_details 表中每个订单的一行(就像我通过使用例如 Distinct 关键字得到的那样)。我收到每个订单的完全相同的行(具有相同的 Order_id 和 Good_id),但我不知道如何只获得每个订单的一行。 这是我的查询(所以基本上我需要按顺序选择所有商品的总和,但我认为这对我的问题并不重要)和方案(如果有帮助的话) 顺便说一句,我正在使用 MYSQL。
SELECT
Order_details.Order_id,
Orders.Date, People.First_name,
People.Surname,
(
SELECT SUM(Goods.Price * Order_details.Quantity)
FROM Order_details, Goods
WHERE Order_details.Good_id = Goods.Good_id
AND Order_details.Order_id = Orders.Order_id
) AS Total_price
FROM Order_details, Goods, Orders, People
WHERE Order_details.Order_id = Orders.Order_id
AND Order_details.Good_id = Goods.Good_id
AND Order_details.Order_id = Orders.Order_id
AND Orders.Person_id = People.Person_id
ORDER BY Order_id ASC;
我尝试了几种方法,但仍然无法弄清楚。也许以某种方式子查询是可能的?但我不确定... (我已经尝试过 UNION 的方法,但它也不是关键)
【问题讨论】: