疲倦阻止我找到这个…说你有以下表格:
亲
> PARENT_ID(长)
儿童
> CHILD_ID(长)
> PARENT_ID(长,FK)
> HAS_GRADUATED(BOOLEAN)
我想要一个查询返回以下true(1,在Oracle的情况下)如果父项至少有一个已经毕业的子项,并且假(如果是Oracle则为0)如果父项没有子项毕业了,或者根本没有孩子:
PARENT_ID…………….HAS_CHILDREN_WHO_GRADUATED
5……………………………1
3……………………………1
6……………………………0
2……………………………0
在上文中,parent_id = 5的父级可能具有> = 1个已毕业的子级.父母与parent_id = 3相同. parent_id = 6的父母要么根本没有孩子,要么有孩子,但没有孩子毕业.
对此的查询是什么样的?
最佳答案
使用:
SELECT DISTINCT
p.parent_id,
CASE WHEN c.parent_id IS NULL THEN 0 ELSE 1 END
FROM PARENT p
LEFT JOIN CHILD c ON c.parent_id = p.parent_id
AND c.has_graduated = 1
您必须使用外部联接才能查看子表中没有支持记录的父值.
相关文章
转载注明原文:sql – 选择count(*)或零 - 代码日志