1

我有三个表table1,table2,table3。table1 有 a、b 列。表 2 有 c、b、d 列。表 3 有 d、e 列

Table 1               Table 2                        Table 3
a     b               c, b, d                        d     e

我需要匹配 b 上的 table1、table2 和 d 上的 table2 和 table3。我需要在表 1 的“a”列中显示数据,并且如果由于 table2 和 table3 中的匹配而存在行,那么我需要在表 3 中显示“e”列以及“a”列。如果 table2 和 table 3 之间的匹配中不存在任何行,我可以显示 null。

让我知道任何澄清或数据。我正在使用 sqlite3,但存在子句的工作方式就像在 sql 中一样。

我尝试但无法为此编写正确的查询。

select a, e from table1 t1 join tablet2  t2 on t1.b = t2.b (and if exists?)
4

2 回答 2

0

您需要使用外部联接,如下所示:

select a, e
from table1 t1
left outer join table2 t2 on t1.b = t2.b
left outer join table3 t3 on t2.d = t3.d
where ...

如果任何table2table3中的行丢失,e将是null

于 2013-05-30T19:45:59.847 回答
0
SELECT A, E
FROM table1 t1
LEFT JOIN table2 t2 on T1.B=T2.B
LEFT JOIN table3 T3 on T3.D=T2.D
于 2013-05-30T19:51:16.227 回答