2015-06-19 146 views
0

我有目前3個表:加入3個表

  • 表A
  • 表B
  • 表C

有一個& B和B之間的鏈路之間的鏈路& C(ABC)。 的事情是:

  • 很可能有一個排在A,但無不是B中
  • 它可能有一排B,而不是在一個
  • 它可能有一排在B,而不是在C

在最後我想有一個查詢,其可以給我下面行(其中,X表示對應表的ID):

TableA|TableB|TableC 
    X | X | X 
    X | null | null 
null | X | X 
    X | X | null 

我設法與表A &表B用下面的查詢情況:

SELECT A.ID, B.ID 
FROM TABLEA A 
LEFT JOIN TABLEB B on (join condition) 
UNION 
SELECT A.ID,B.ID 
FROM TABLE B 
LEFT JOIN TABLEA A on (join condition) 

感謝您的幫助,您可以提供

回答

0

如果我的理解是正確的那麼FULL OUTER JOIN應該做的工作:

SELECT a.id,b.id,c.id 
FROM TableA a 
     FULL OUTER JOIN TableB b on a.id = b.id 
     FULL OUTER JOIN TableC c on COALESCE(a.id,b.id) = c.id 

SQL Fiddle

1

您需要的是FULL OUTER JOIN,但是,您已使用標記了您的帖子 - 這取決於您的意思。 Sybase ASE不支持FULL OUTER JOIN語法,但SQL Anywhere支持。

+0

尼斯信息... :)我沒有在Sybase上工作,似乎我不得不修改我的答案。 –