我有兩個表groups
和group_members
MySQL的:獲取組的列表與它們的總件數
groups
具有列srno
是整數之一,並且是主鍵
group_members
具有是柱group_srno
外鍵映射到表groups
group_members
的srno
有另一列member_profile_srno
其是整數
的樣本數據:
groups
有行:
srno groupname
1 firstgroup
2 secondgroup
3 thirdgroup
4 fourthgroup
group_members
有行:
group_srno member_profile_srno
1 147258
1 132678
1 551766
2 347799
2 556657
3 147258
3 365376
3 576252
3 682762
4 147258
4 465545
我想從groups
這給member_profile_srno
列出所有行是其成員。在同一個查詢中,我也希望獲得列出的每個組成員的總數。
所以我的代碼運行該查詢(例如其中member_profile_srno
值爲147258):
select distinct grps.*,
count(grpmembrs1.member_profile_srno) as grpmembrscount
from groups as grps
inner join group_members as grpmembrs1 on grpmembrs1.group_srno = grps.srno
inner join group_members as grpmembrs2 on grpmembrs2.group_srno = grps.srno
where grpmembrs1.member_profile_srno = 147258
group by grps.srno;
這將返回我預期的結果。
srno groupname grpmembrscount
1 firstgroup 3
3 thirdgroup 4
4 fourthgroup 2
我的意思是我得到所有有147258作爲成員的組,並列出每個組的總成員數。
但是,我不確定爲什麼加入grpmembrs2
存在於查詢中,當它沒有被引用時。但是,如果我刪除該聯接,則grpmembrscount
不會得到正確的值(對於所有行,它是1
)。
任何想法爲什麼會發生這種情況,這是正確的方法嗎?
更新你的問題添加一個合適的數據樣本和預期的結果請 – scaisEdge
DISTINCT與'GROUP BY'一起使用,因爲它看起來很可疑並且可能是不必要的。請向我們展示一些數據。 –
好的,我會在一段時間內用一些數據更新這個問題。謝謝! – Atul