单个sql查询仅在父表中的所有记录都具有值时才从父表中选择记录

时间:2017-09-26 00:32:06

标签: postgresql

我有上表: In Which, T2.id1 is a foreign key from T1 and , T3.id1 and T3.id2 are foreign keys from T1 and T2

我需要一个查询来检查是否在T3中,对于每个Id1,我们根据T2有所有Id2,返回上面的结果表 在表T2中,id1只有id2所以在结果中我们只有id2与id1 = 1在同一行中,而name3只在该行中排列

1 个答案:

答案 0 :(得分:0)

SELECT T2.Id1
     , CASE WHEN count(DISTINCT Id2) > 1 THEN 'All'::text
            ELSE min(Id2)::text END AS Id2
     , string_agg(DISTINCT Name3, ',') AS Name3
FROM        T2
LEFT   JOIN T3 USING (Id1, Id2)
GROUP  BY T2.Id1
HAVING bool_or(T3.Id1 IS NULL) IS FALSE;

假设所有标识符都没有引用,因此有效地区分大小写。

通常我会添加更多解释,但我会在问题中与沉默相匹配。