我有两个单独的表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
答案 0 :(得分:2)
试试这个:
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
答案 1 :(得分:2)
您可以通过简单使用左连接来实现此目的:
试试这个:
SELECT c。*,COUNT(p.member_id)child FROM tab_name c LEFT JOIN 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
答案 2 :(得分:1)
试试这个
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