我正在寻找我认为对三个表进行双重嵌套检查的方法,但不知道如何执行。
我有Table1,Table2和Table3。 在表1中,所有内容都由ID和“ Longform”和“ Shortform”绑定:
我正在寻找: ID在表2中显示的条目与表3中的条目具有 相同的长格式,但没有共享相同的短格式。
这大约是我得到的:
SELECT T2.Longform,T2.Shortform FROM(
SELECT Table1.Longform,Table1.Shortform,Table1.ID FROM OuterTable1.Table1
LEFT JOIN OuterTable2.Table2 on Table1.ID = Table2.ID)
WHERE Table2.ID IS NOT NULL) T2
;
我知道我可能必须在Outertable3.Table3上进行另一个嵌套选择或联接,但是我不确定哪个...或在哪里...
任何帮助一如既往。
答案 0 :(得分:2)
尝试以下操作:
Select *
(
Select T1.*
from T2
inner join T1
on T1.ID = T2.ID
) as Tab
inner join
(
Select T1.*
from T3
inner join T1
on T1.ID = T3.ID
) as Tab2
on Tab.id = Tab2.id
and Tab.Longform = Tab2.Longform
and Tab.Shortform <> Tab2.Shortform
答案 1 :(得分:1)
要获得longform
,请将table1
加入table2
或table3
。然后使用EXISTS
来签入子查询,如果table1
的ID不同但longform
相等。
SELECT *
FROM table2 t21
INNER JOIN table1 t11
ON t11.id = t21.id
WHERE EXISTS (SELECT *
FROM table3 t32
INNER JOIN table1 t12
ON t12.id = t32.id
WHERE t12.id <> t11.id
AND t12.longform = t11.longform);
答案 2 :(得分:1)
假设ID在所有三个表中都是唯一的
Select t2.id,t2.shortform, t1.shortform AS shortformTab1, t2.longform
FROM table2 t2
JOIN table3 t3
ON t2.id = t3.id AND t2.longform = t3.longform
JOIN table1 t1
ON t2.id = t1.id AND t2.shortform != t1.shortform