如何组织多个连接SQL

时间:2016-06-07 01:18:07

标签: sql join normalization

在SQL中,当我在一个查询中进行多个连接时,我应该如何将表连接在一起。我应该只加入一个表 - 在这种情况下是Customers表还是可以做我已经做过的事情(在需要新密钥时加入不同的表)?

self

我正在使用W3Schools SQL TryIt编辑器对此进行测试,不确定它是什么数据库引擎!

谢谢!

2 个答案:

答案 0 :(得分:1)

当然,您可以在查询中加入多个表。这是SQL的强大功能。

在您的特定情况下,您不需要加入Suppliers表,因为该列已在Products

此外,您需要注意SELECTGROUP 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语法。