SQL选择主记录并显示每个的详细记录数

时间:2010-10-21 19:57:04

标签: sql sql-server tsql

我有一个Master和Detail表,详细信息链接到FK参考的主记录。

我需要显示Master表中的所有数据,以及每条记录的相应详细信息,即

MASTER TABLE
ID Name  Age
1  John  15
2  Jane  14 
3  Joe   15

DETAIL
MasterID Subjects
1        Trigonometry
1        Chemistry
1        Physics
1        History
2        Trigonometry
2        Physics

因此,当我运行SQL语句时,我会得到以下结果:

ID Name Age #Subjects
1  John 15  4  
2  Jane 14  2
3  Joe  15  0

谢谢!

2 个答案:

答案 0 :(得分:10)

这可能很有用

SELECT mt.ID, mt.NAME, mt.AGE, COUNT(d.MasterID) as [#Subjects]
FROM MasterTable mt
LEFT OUTER JOIN Detail d on mt.ID = d.ID
GROUP BY mt.ID, mt.NAME, mt.AGE
ORDER BY mt.ID

答案 1 :(得分:8)

select id, 
       name, 
       age, 
       ( select count(*) 
           from detail 
          where master.id = detail.id )  as record_count
  from master

根据您使用的数据库调整语法