在存储过程中连接4个表

时间:2013-03-18 19:39:59

标签: c# sql-server-2008 stored-procedures

我有四个表,我需要通过存储过程从所有表中获取数据。 表1是主表,并且如此布局

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"

我做错了什么?请帮忙

1 个答案:

答案 0 :(得分:4)

在这种情况下尝试使用LEFT JOIN,并对字符串使用单引号:

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有一个演示供您试用。