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

Bat*_*uta 5 sql t-sql sql-server

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

我需要显示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
Run Code Online (Sandbox Code Playgroud)

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

ID Name Age #Subjects
1  John 15  4  
2  Jane 14  2
3  Joe  15  0
Run Code Online (Sandbox Code Playgroud)

谢谢!

bob*_*obs 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
Run Code Online (Sandbox Code Playgroud)


Ray*_*Ray 8

select id, 
       name, 
       age, 
       ( select count(*) 
           from detail 
          where master.id = detail.id )  as record_count
  from master
Run Code Online (Sandbox Code Playgroud)

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