[英]Implementing Count() and Group By() in MySQL using two Tables
我有兩個單獨的表tbl_name
和tbl_parent
。
這是我的數據庫的樣子:
tbl_name
member_id first_name last_name
0 John Doe
1 Jane Doe
2 Julie Doe
3 Billy Joe
tbl_parent
member_id parent_id
0 Null
1 0
2 0
3 Null
如您所見,tbl_name保存有關成員的數據,而tbl_parent用於定義tbl_name中每個記錄的關系。
tbl_parent中的parent_id僅引用了member_id,因此基於給定的表,John Doe是Jane Doe和Julie Doe的父母。
現在我要計算所有具有parent_id 0的人,
這是我的查詢,當它們沒有分隔在不同的表中時,它工作正常。
select *, count(parent_id) from tbl_parent group by parent_id
我遇到的困難是使用兩個表,但無法正確顯示
我希望輸出為:
member_id first_name last_name child
0 John Doe 2
1 Jane Doe 0
2 Julie Doe 0
3 Billy Joe 0
嘗試這個:
SELECT tbl_name.*, COUNT(tbl_parent.member_id) AS child
FROM tab_name
LEFT JOIN tbl_parent ON tbl_name.member_id = tbl_parent.parent_id
GROUP BY tbl_name.member_id
您可以通過簡單地使用Left連接來實現:
嘗試這個:
SELECT c。*,COUNT(p.member_id)個子項來自tab_name c左聯接tbl_parent p ON c.member_id = p.parent_id GROUP BY c.member_id
請查看以下鏈接以獲取有關MySQL中的聯接的更多知識http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html
嘗試這個
select n.*, count(parent_id) Child
from tbl_name n
left outer join tbl_parent p on n.member_id = p.parent_id
GROUP BY n.member_id, first_name, last_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.