我有 2 个表:父级和子级
--parent table:
+-------+--------+--------+
| id | name | active |
+-------+--------+--------+
| 1 | Júlia | 1 |
| 2 | Constança | 1 |
| 3 | Diana | 1 |
| 4 | Mariana | 1 |
--child table:
+----+-----------+-----------+
| id | idparent | pregnant |
+----+-----------+-----------+
| 1 | 1 | 0 |
| 2 | 1 | 0 |
| 3 | 2 | 1 |
| 4 | 4 | 0 |
| 5 | 4 | 0 |
| 6 | 4 | 0 |
| 7 | 4 | 1 |
用户 1 有 2 个孩子且未怀孕
用户 2 怀孕但没有孩子
用户 3 没有怀孕也没有孩子(因此不会出现在孩子表中)
用户 4 有 3 个孩子并且怀孕了。
如何计算怀孕并已经有孩子的父母人数?我需要构建一份报告来计算有多少父母:
怀孕并有1个孩子
怀孕并有2个孩子
怀孕并有3个孩子
怀孕并有+4个孩子
看起来很容易,但我无法解决这个问题。谢谢
首先,您需要让父母已经出生的所有孩子:
SELECT COUNT(*), idparent FROM child c WHERE pregnant = 0 GROUP BY idparent
然后你想要所有怀孕的父母:
SELECT p.id, p.name FROM parent p
INNER JOIN child c ON c.idparent = p.id
WHERE c.pregnant = 1
然后:
SELECT p.id, p.name, t.nb_child FROM parent p
INNER JOIN child c ON c.idparent = p.id
INNER JOIN (SELECT COUNT(*) as nb_child, idparent
FROM child c
WHERE pregnant = 0 GROUP BY idparent) t ON t.idparent = p.id
WHERE c.pregnant = 1
正如上面的评论所说,你的模型很糟糕,我不确定我是否回答了你想要的,对不起,如果我不明白。