You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 23:27:33