获得孩子数量的好方法?

时间:2012-02-01 09:25:38

标签: mysql database database-design

我有两张父子关系表:

PARENT 表格,其中id为索引

    id  | name
----------------
    1   | Bob
    2   | Mike
    3   | Joe

CHILDREN 表格,其中id为索引

   id   | parent | name
-------------------------
    1   | 1      | Ronald
    2   | 2      | Sammy
    3   | 3      | Jenny
    4   | 1      | Tara
    5   | 3      | Jack

在我的网站上,我想显示所有父母的列表,其子女数量如下:

    id  | name | Children Count
-------------------------------
    1   | Bob  |      2
    2   | Mike |      1
    3   | Joe  |      2

这样做的有效方法是什么?请注意,这里我代表了我的数据结构的类似简化版本,在我的实际情况中,我的PARENT表中有大约10000条记录,每个parent大约有10 - 200 children

如果您建议在count表格中添加PARENT列,您是否知道count当{I}} MYSQL会自动更新CHILDREN时在{{1}}表中进行更改?

3 个答案:

答案 0 :(得分:3)

SELECT p.id,
       p.name,
       COUNT(c.id) AS children_count
FROM parent p
LEFT JOIN children c ON p.id = c.parent
GROUP BY p.id

答案 1 :(得分:1)

似乎可以这样做

select p.id, p.name, c.cnt
from parent p
inner join (select parent, count(id) cnt 
            from children
            group by parent) c on p.id = c.parent

答案 2 :(得分:0)

查询:

SELECT a.id, a.name, COUNT(b.name) 
FROM parent a 
INNER JOIN children b  
ON a.id = b.parent 
GROUP BY b.parent;