SQL新手求助:编写多表关联查询获取购买指定产品的CustomerID与Quantity
如何关联多表获取购买指定产品的客户ID和购买数量
嘿,作为SQL新手能写出基础的INNER JOIN语句已经超棒了!你已经找对了方向,现在只需要按照你梳理的关联链,把剩下的表依次关联进来就可以啦。
你提到的关联路径Products.ProductID→OrderDetails.ProductID→OrderDetails.OrderID→Orders.OrderID→Orders.CustomerID完全正确,我们只需要在现有语句基础上,继续用INNER JOIN连接Orders和Customers表,同时指定对应的关联条件:
SELECT Customers.CustomerID, OrderDetails.Quantity FROM Products INNER JOIN OrderDetails ON OrderDetails.ProductID = Products.ProductID INNER JOIN Orders ON Orders.OrderID = OrderDetails.OrderID INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID WHERE Products.ProductName = 'oil';
语句拆解说明:
- 从
Products表开始,先关联OrderDetails(用ProductID匹配),这部分你已经写对了; - 接着用
OrderID把Orders表和OrderDetails关联起来,这样就能拿到每个订单对应的客户ID; - 最后用
CustomerID把Customers表和Orders关联,就能获取到客户的ID; - 最后在
SELECT里指定你需要的CustomerID和Quantity字段,加上WHERE条件筛选产品名为"oil"的记录。
执行这条语句后,就能得到你想要的结果格式:
CustomerID | Quantity ----------------------- 1 | 10 4 | 40 5 | 1
如果担心字段名冲突(比如不同表有同名字段),可以给表加别名简化语句,可读性会更强:
SELECT c.CustomerID, od.Quantity FROM Products p INNER JOIN OrderDetails od ON od.ProductID = p.ProductID INNER JOIN Orders o ON o.OrderID = od.OrderID INNER JOIN Customers c ON c.CustomerID = o.CustomerID WHERE p.ProductName = 'oil';
内容的提问来源于stack exchange,提问作者WhatTheWhat
相关产品推荐
相关产品推荐

