在SQL中,当我在一个查询中进行多个连接时,我应该如何将表连接在一起。我应该只加入一个表 - 在这种情况下是Customers表还是可以做我已经做过的事情(在需要新密钥时加入不同的表)?
self
我正在使用W3Schools SQL TryIt编辑器对此进行测试,不确定它是什么数据库引擎!
谢谢!
答案 0 :(得分:1)
当然,您可以在查询中加入多个表。这是SQL的强大功能。
在您的特定情况下,您不需要加入Suppliers
表,因为该列已在Products
。
此外,您需要注意SELECT
和GROUP BY
条款。通常,您应将所有非聚合列放在GROUP BY
:
SELECT O.OrderID, O.OrderDate, C.City, C.Country, C.PostalCode, C.ContactName,
O.CustomerID, O.ShipperID, D.ProductID,
COUNT(D.ProductID) as ProductCount,
P.SupplierID
FROM Customers C INNER JOIN
Orders O
ON O.CustomerID = C.CustomerID INNER JOIN
OrderDetails D
ON O.OrderID = D.OrderID INNER JOIN
Products P
ON D.ProductID = P.ProductID
GROUP BY O.OrderID, O.OrderDate, C.City, C.Country, C.PostalCode, C.ContactName,
O.CustomerID, O.ShipperID, D.ProductID, P.SupplierId
ORDER BY OrderDate DESC;
WHERE 1=1
也是不必要的。
我想知道这个查询是否真的能满足您的需求。但是,你没有说明你真正想要查询的内容,所以我只是在推测。
答案 1 :(得分:1)
您完成此操作的方法是查找,不要忘记,对于每个内部联接,您的记录集可能会减少每个其他联接中非匹配键的数量。
您也可以使用JOIN语法。