如何制定一个需要提及四个不同表的SQL查询



我想在一个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

这为每家公司提供了客户购买的所有(不同(产品的列表。

最新更新