【问题标题】:Implementing Count() and Group By() in MySQL using two Tables使用两个表在 MySQL 中实现 Count() 和 Group By()
【发布时间】:2013-10-28 14:28:57
【问题描述】:

我有两个单独的表 tbl_nametbl_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

【问题讨论】:

标签: mysql join count group-by


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

    您可以通过简单地使用左连接来实现这一点:

    试试这个:

    SELECT c.*, COUNT(p.member_id) 孩子 FROM 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

    【讨论】:

      【解决方案3】:

      试试这个

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-16
        • 1970-01-01
        • 1970-01-01
        • 2020-08-29
        • 2020-05-17
        • 2015-09-22
        • 1970-01-01
        相关资源
        最近更新 更多