【发布时间】:2019-06-06 14:23:45
【问题描述】:
我正在尝试编写一个 MySQL 查询来实现以下目标:
根据所选的 customerNumber,它应该显示所有 客户订购的产品以及所有产品详细信息和订单详细信息,按订单日期按时间顺序排列。
ERD 如下所示:
对于每个选定的客户编号,我只需要来自订单、订单详细信息和产品表的数据。
【问题讨论】:
-
你尝试了什么?
标签: mysql sql join mysql-workbench
我正在尝试编写一个 MySQL 查询来实现以下目标:
根据所选的 customerNumber,它应该显示所有 客户订购的产品以及所有产品详细信息和订单详细信息,按订单日期按时间顺序排列。
ERD 如下所示:
对于每个选定的客户编号,我只需要来自订单、订单详细信息和产品表的数据。
【问题讨论】:
标签: mysql sql join mysql-workbench
您可以尝试这个并更改您需要的内容以使其正常工作。
所以每个* 必须替换为您要显示的表格的列的列表:
SELECT
C.customerNumber , -- the customer id
O.*, -- replace by O.column_name1, O.column_name2, ...
OD.*, -- replace by OD.column_name1, OD.column_name2, ...
P.* -- replace by P.column_name1, P.column_name2, ...
FROM customers as C
-- If you only want customer with at least ONE orders, change LEFT JOIN by INNER JOIN
LEFT JOIN orders as O on O.customerNumber = C.customerNumber
-- I suppose orderLineNumber is the same than orderNumber in table orders?
LEFT JOIN orderdetails as OD on OD.orderLineNumber = O.orderNumber
LEFT JOIN products as P on P.productCode = OD.productCode
-- The result will be order by customerNumber, of for each customerNumber by orderDate
ORDER BY C.customerNumber, O.orderDate
这是你要找的吗?
【讨论】: