我有两张桌子:父母和孩子
--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个孩子
似乎很容易,但我无法理解这一点。 感谢
答案 0 :(得分:3)
首先,您需要让所有已经由父母出生的孩子:
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
正如上面的评论所说,你的模型非常糟糕,我不确定我是否回答你想要的东西,对不起,如果我不理解的话。