0

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

如何创建一个查询,列出客户在“Orders”、“Orders2”、“Orders3”和“Orders4”表中列出的次数以及相应的客户姓名?

4

1 回答 1

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
于 2013-04-11T15:06:40.243 回答