我有三個表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