gpt4 book ai didi

MySQL - 仅当 parent 怀孕时才计算 parent 的 child

转载 作者:行者123 更新时间:2023-11-29 01:52:48 25 4
gpt4 key购买 nike

我有 2 个表: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个 child ,没有怀孕

用户2怀孕但没有 child

用户 3 没有怀孕也没有 child (因此没有出现在 child 表中)

用户 4 有 3 个 child 并且怀孕了。

如何统计已怀孕且已生育的 parent 人数?我需要构建一个统计有多少 parent 的报告:

  • 怀孕并育有1个 child

  • 怀孕并育有2个 child

  • 怀孕并育有3个 child

  • 怀孕并有+4个 child

看起来很简单,但我无法理解这个问题。谢谢

最佳答案

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

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

正如上面的评论所说,你的模型很糟糕,我不确定我是否回答了你想要的,如果我不明白,抱歉。

关于MySQL - 仅当 parent 怀孕时才计算 parent 的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36769317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com