我想在一个SQL查询中获得公司名称和他们购买的所有产品。
使用的数据库是Northwind样本数据库。这些列和dbs表之间的关系如下:
ProductName <- [T]Products -> [K]ProductID
/
||
/
[T]OrderDetails -> [K]ProductID
.. [K]OrderID
/
||
/
[T]Orders -> [K]OrderID
.. [K]CustomerID
/
||
/
CompanyName <- [T]Customers -> [K]CustomerID
其中[T]是一个表,[K]是表的键。
我试图至少获得相应的产品名称,但SQL Server说这样的包含是无效的。
SELECT ProductName
FROM Products
WHERE ProductID IN (SELECT ProductID
FROM [Order Details]
WHERE OrderID IN (SELECT OrderID, CustomerID
FROM Orders));
如何在一个查询中提及四个不同的表?
您似乎在寻找联接:
select distinct c.companyName, p.productName
from customers c
inner join orders o on o.customerID = c.customerID
inner join orderdetails od on od.orderID = o.orderID
inner join products p on p.productID = od.productID
这为每家公司提供了客户购买的所有(不同(产品的列表。