sqlserver多表聯合查詢
新手第一篇文章,不足之處多多指教
例如:表A裏面存儲教師基本信息;表B存儲教師獲獎情況;表C存儲教師出書情況;表D存儲教師學術論文情況
現在需要查詢出教師基本信息以及另外三個表中關於該教師其他情況的記錄條數。
表A
ID WorkId Name BirthDay
表B
ID WorkId Reward
表C
ID WorkId Book
表D
ID WorkId Paper
select *, 0 AS NUM from A WHERE A.WorkID='1234'
union all
select A.*, COUNT(B.ID) AS NUM FROM A,B WHERE A.WorkId='1234' AND A.WorkId=B.WorkId GROUP BY A.[ID] ,A.[WorkId],A.[Name],A.[Birthday]
union all
select A.*, COUNT(C.ID) AS NUM FROM A,C WHERE A.WorkId='1234' AND A.WorkId=C.WorkId GROUP BY A.[ID] ,A.[WorkId],A.[Name],A.[Birthday]
union all
select A.*, COUNT(D.ID) AS NUM FROM A,D WHERE A.WorkId='1234' AND A.WorkId=D.WorkId GROUP BY A.[ID] ,A.[WorkId],A.[Name],A.[Birthday]
GROUP BY 後面必須列出表A裏面所有列名
UNION ALL 使用注意:查詢出的列數必須相同