2012-08-31 249 views
-1

我有4個表需要加入查詢。我想要表1中的所有結果,然後想要加入表1,2,3的任何結果。我不知道如何編寫這個查詢。需要加入4個表

這是我最好的猜測:

SELECT 
* 
FROM 
t1 
INNER JOIN 
(
t2 on t2.id = t1.id 
FULL OUTER JOIN t3 on t3.id = t1.id 
FULL OUTER JOIN t4 on t4.id = t1.id 
) 

我發現this post,解釋了不同類型的聯接。從這我相信我想要table1的左或右連接,但後來我對嵌套語句感到困惑。

+0

所有這些表如何關聯?知道這將有助於提高查詢效率。 –

回答

2

的關鍵,你的問題是,你想從表1的所有結果這意味着一個左外連接:

select * 
    from t1 left outer join 
     t2 
     on t1.id = t2.id left outer join 
     t3 
     on t1.id = t3.id left outer join 
     t4 
     on t1.id = t4.id 

左外連接保留所有記錄在「第一」或「前」表,但不包含第二個表中的記錄。因爲你從t1開始,所有這些記錄將只保留與t2的匹配,依此類推。

+0

當你離開外連接t3外連接仍然是相對於t1? – spyderman4g63

+0

如果我選擇count(*)t1,我得到594333.但是,如果我在這個查詢上運行一個計數,我得到1125176.似乎它獲得比t1更多的行。 – spyderman4g63

+0

哦等待,在一個到多個多行中可以創建一個t1.id. – spyderman4g63