gpt4 book ai didi

sql - 如何编写一个显示没有 child 的祖 parent (两个子表)的 SQL 查询?

转载 作者:行者123 更新时间:2023-11-29 12:55:40 25 4
gpt4 key购买 nike

我想编写一个查询,返回所有没有孙辈的祖 parent 。这是我的表结构:

**Grandparents**
id name
1 lewis

**Parents**
id name grandparent_id
10 bob 1
11 mark 1

**Children**
id name parent_id
99 seabass 10

这是我编写的查询,但它返回“祖 parent ”,其中一位 parent 有 0 个 child (陷阱!)。我只想返回所有 parent 都有 0 个 child 的祖 parent ,但我不确定这样做的最佳方法。

SELECT grandparents.*
FROM grandparents
LEFT OUTER JOIN parents ON parents.grandparent_id = grandparents.id
LEFT OUTER JOIN children ON children.parent_id = parents.id
WHERE children.id is null
GROUP BY grandparents.id
HAVING count(children.id) = 0;

此查询返回祖 parent “lewis”,但我想编写一个返回的查询:在此实例中有 0 条记录,因为没有没有孙子的祖 parent 。

附言。祖 parent 不能单独存在并且在数据中至少有一个 parent 。

最佳答案

你很接近。您想知道从不任何 child ,所以比较需要在 having 子句中:

SELECT gp.*
FROM grandparents gp LEFT OUTER JOIN
parents p
ON p.grandparent_id = gp.id LEFT OUTER JOIN
children c
ON c.parent_id = p.id
GROUP BY gp.id
HAVING COUNT(c.id) = 0;

您的查询实际上回答了一个稍微不同的问题:有多少祖 parent 有没有 child 的 child ?

关于sql - 如何编写一个显示没有 child 的祖 parent (两个子表)的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44011367/

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