涉及外键的SQL查询

时间:2013-04-11 15:02:44

标签: sql count foreign-keys

我正在阅读http://www.w3schools.com/sql/sql_foreignkey.asp的SQL教程,并想知道如果我们有多个表引用相同的主键,将如何构造查询。例如,在前面提到的链接中,如果我们有一个Orders2,Orders3和Orders4表,它们都具有相似的功能(表' Orders'),那么它们就有了一个名为P_Id的列。

如何创建一个查询,列出客户在表格中列出的次数'订单'订单2''订单3'和'订单4'以及相应的客户名称?

1 个答案:

答案 0 :(得分:3)

使用LEFT JOIN加入每个表,以防某些表中没有该订单的订单:

SELECT p.P_Id, p.LastName, p.FirstName, 
       COUNT(a.P_Id) AS OrdersCount, 
       COUNT(b.P_Id) AS Orders2Count, 
       COUNT(c.P_Id) AS Orders3Count, 
       COUNT(d.P_Id) AS Orders4Count
FROM Persons p
LEFT JOIN Orders a ON p.P_Id = a.P_Id
LEFT JOIN Orders2 b ON p.P_Id = b.P_Id
LEFT JOIN Orders3 c ON p.P_Id = c.P_Id
LEFT JOIN Orders4 d ON p.P_Id = d.P_Id
GROUP BY p.P_Id, p.LastName, p.FirstName