2014-01-29 100 views
0

我得到了在數據庫中的兩個表:取前3名計數從兩個表SQLSERVER 2008

dbo.Family 
dbo.Family_member 

relationship between them one-to-many 

每個家庭有一個或多個family_member 內的連接條件是:

on dbo.Family.F_id = dbo.Family_member.FM_f_id 

我需要一個查詢獲得最多的成員數量的前3名的家庭成員的編號

這意味着我應該計算每個家庭的family_member中有多少條記錄,然後通過它們排序decs並進入前3

你能幫忙嗎?

回答

1

你需要在家人ID字段上做一個「group by」;查詢會是這樣的:

SELECT TOP 3 dbo.Family.F_id 
FROM dbo.Family 
INNER JOIN dbo.Family_member 
ON dbo.Family.F_id = dbo.Family_member.FM_f_id 
GROUP BY dbo.Family.F_id 
ORDER BY count(*) DESC 
1

試試這個:

select TOP 3 *, (select count(dbo.Family_member.FM_f_id) 
from dbo.Family_member where dbo.Family_member.FM_f_id = dbo.Family.F_id) 
winners from dbo.Family order by winners desc