2013-03-18 40 views
0

我有四個表格,我需要通過存儲過程從所有這些表格中獲取數據。 表1是主表和被佈置這樣在存儲過程中加入4個表格

ID REF1 REF2 Data1 
1 01 11 abc 
2 01 22 def 
3 01 33 ghi 

表2看起來像這樣

ID ref2ID Data2 
1 11  a 
2 99  x 

表3

ID ref3ID Data3 
1 22  b 

表4

ID ref4ID Data4 
1 33  c 

我會怎麼樣根據'REF2'列從所有四個表中獲取數據。

我試過這樣的事情,但我沒有得到正確的數據。我需要將Data1,Data2,Data3和Data4列中的所有記錄帶入

Select Table1.Data1, 
     Table2.Data2, 
     Table3.Data3, 
     Table4.Data4, 
From Table1 INNER JOIN 
     Table2 ON Table1.REF2 = Table2.Ref2ID INNER JOIN 
     Table3 ON Table1.REF2 = Table3.Ref3ID INNER JOIN 
     Table4 ON Table1.REF2 = Table4.Ref4ID 
WHERE REF1 = "01" 

我在做什麼錯?請幫助

+2

也許你想要一個左連接而不是內連接......但這是一個猜測沒有更多的信息 – 2013-03-18 19:42:16

+1

我懷疑你想要一個左外連接而不是內連接。 Table1中的記錄是否在Table2,Table3或Table4中沒有相應的行?你是否希望看到Table1行嗎?在這種情況下,請使用LEFT OUTER JOIN – Melanie 2013-03-18 19:43:08

+0

謝謝Melanie ...是的,我也需要表1中的數據。我正在嘗試您的建議 – EagleFox 2013-03-18 19:44:05

回答

4

LEFT JOIN試試在這種情況下,AMD還使用單引號字符串:

SELECT Table1.Data1, 
     Table2.Data2, 
     Table3.Data3, 
     Table4.Data4 
FROM Table1 
LEFT JOIN Table2 
    ON Table1.REF2 = Table2.Ref2ID 
LEFT JOIN Table3 
    ON Table1.REF2 = Table3.Ref3ID 
LEFT JOIN Table4 
    ON Table1.REF2 = Table4.Ref4ID 
WHERE REF1 = '01' 

Here is a sqlfiddle與演示,您可以嘗試。

+0

@Lamak ......你是個天才......謝謝你 – EagleFox 2013-03-18 19:56:27

相關問題