2011-03-02 87 views
1

我有3個表:SQL條件加入

table1:table1_col1, table1_col2,table1_col3 
table2 : table1_col1, table2_col2,table2_col3 
table3 : table1_col1, table3_col2,table3_col3 

當我試圖通過命名,表1說明:table1_col1是一個獨特的密鑰可以引用表2:table1_col1或表3:table1_col1但不可能兼顧。 我需要做表1,表2之間的連接,表3這樣的:

join table1 with table2 if table1:table1_col1 = table2 : table1_col1 
join table1 with table3 if table1:table1_col1 = table3 : table1_col1 

這是可能的SQL語法?
謝謝。

+0

可能需要看到一些示例數據。我不確定我瞭解目標。 。 。 – richard 2011-03-02 18:35:25

回答

1

我會假設你從表中的2和3太想對應的列。

select 
     t1.table_col1, 
     t2.table2_col2, 
     t2.table2_col3, 
     t3.table3_col2, 
     t3.table3_col3 
    from 
     table1 t1 
     left join table2 t2 
      on t1.table1_col1 = t2.table1_col1 
     left join table3 t3 
      on t1.table1_col1 = t3.table1_col1 

此外,如果你只是想從各自的表2或3列,它們是相同的數據類型,你可以使用NVL()函數,如

select 
     t1.table_col1, 
     nvl(t2.table2_col2, t3.table3_col2) as SecondCol, 
     nvl(t2.table2_col3, t3.table3_col3) as ThirdCol 
    from 
     table1 t1 
     left join table2 t2 
      on t1.table1_col1 = t2.table1_col1 
     left join table3 t3 
      on t1.table1_col1 = t3.table1_col1 
1

您可以使用LFET JOIN

FROM table1 
LEFT JOIN table2 ON table1.table1_col1 = table2.table1_col1 
LEFT JOIN table3 ON table1.table1_col1 = table3.table1_col1