MySQL - 仅当 parent 怀孕时才计算 children 父母

MySQL - Count children of partents only if parent is pregnant

我有 2 个 table:parent 和 children

--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 children 并且没有怀孕

用户 2 怀孕但没有 children

用户 3 没有怀孕也没有 children(因此没有出现在 children table)

用户 4 有 3 children 并且怀孕了。

我如何统计 parent 已怀孕且已经有 children 的人数? 我需要构建一个报告来计算有多少 parents:

看起来很容易,但我无法解决这个问题。 谢谢

首先你需要得到所有 parent 已经出生的 children :

SELECT COUNT(*), idparent FROM child c WHERE pregnant = 0 GROUP BY idparent

那你要所有怀孕的parent:

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

正如上面的评论所说,你的模型很糟糕,我不确定我是否回答了你想要的,如果我没有理解,请原谅。