我有三个表A
,B
和C
:SQL多表连接
A
---------
a_pk | id
B
----------------------
b_pk | id | link | foo
C
----------------------
c_pk | id | link | bar
在B
所有记录在A
匹配的记录; C
中的所有记录在A
中有匹配记录,但B
和C
中的记录不一定必须彼此匹配。我想要得到的结果集,其中A有一个匹配的B或C.独立,查询将是:
SELECT A.id, B.foo FROM A INNER JOIN B ON A.id = B.id
SELECT A.id, C.bar FROM A INNER JOIN C ON A.id = C.id
SELECT B.foo, C.bar FROM B FULL JOIN C ON B.id = C.id AND B.link = C.link
我需要填补,以使这项工作?
SELECT A.id, B.foo, C.bar FROM <join A, B, C>
我使用的是Oracle,如果它的确与众不同,我宁愿避免使用子查询,如果可能的。
[编辑 - 澄清]
我想只的从A
具有在任何B
或C
匹配记录。
如果你想加入3个表,你只需要2连接,而不是3 – jcho360
我是知道的,我把3个查询以显示表格之间的关系。 – asgallant