不知道从哪里开始。我需要根据Oracle中外连接和子表的查询集更新单个记录。我在MS Access中起草了一个模拟模型来帮助说明这种情况,但这是一个Oracle开发。
目标:更新'家长'表基于其结果集的子记录没有程序。我本来只是做了一个逻辑程序,但要求是做纯SQL。
我需要根据Child.Status将Parent.Result设置为Y / N. 条件:如果有任何Child.Status = Null OR' N'然后Parent.Result =' N'。换句话说,Parent.Result =' Y'的唯一条件。如果所有Child.Status =' Y'。
我尝试了几种方法,例如计算子结果=' Y',案例陈述和其他失败。我有点坚持如何创建子查询来获得结果。
感谢任何帮助或指导! 感谢
答案 0 :(得分:1)
您可以尝试以下内容。请注意,这只是一次性更新:
UPDATE parent p
SET p.result = (
CASE WHEN EXISTS (
SELECT 1 FROM join j INNER JOIN child c
ON j.child_fk = c.child_pk
WHERE j.parent_fk = p.parent_pk
AND ( c.status IS NULL OR c.status = 'N' ) )
) THEN 'N' ELSE 'Y' END;
如果没有孩子,您不会提及父母的结果是Y
。以上假定它会是。