oracle 从相关表中选择数据

axzmvihb  于 2023-08-03  发布在  Oracle
关注(0)|答案(2)|浏览(120)

这是一个表结构。表2与表1具有多对一关系。表3与表2具有多对一关系。

table 1 -> id_1, data

table 2 -> id_2, data, id_1 

table 3 - > id_3, data, filter, id_2

字符串
我想从表1中选择所有数据,其中表3的过滤器!= 'abc';
我不确定我的问题是否表达正确,问题的标题也有点模糊(请帮助我纠正)。

r1zk6ea1

r1zk6ea11#

看起来像一个连接:

select a.*
from table1 a join table2 b on b.id_1 = a.id_1
              join table3 c on c.id_2 = b.id_2
where c.filter <> 'abc'

字符串

7gcisfzg

7gcisfzg2#

如果你想匹配table1中的行,而table3中不存在对应的行,其中filter = 'abc',那么你可以使用NOT EXISTS并跨桥接表进行连接:

SELECT *
FROM   table1 t1
WHERE  NOT EXISTS(
         SELECT 1
         FROM   table2 t2
                INNER JOIN table3 t3
                ON (t2.id_2 = t2.id_2)
         WHERE  t1.id_1 = t2.id_1
         AND    t2.filter = 'abc'
       );

字符串

相关问题