2013-03-18 54 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