两个以上的表使用连接

时间:2013-03-29 14:15:22

标签: sql join

MainTable

ID Column1         TableA.fK TableB.fk
1  some-value        1          null
2  some-value        1          1
3  some-value        null       2

表A

TableA.pk  Column1
1          some-value

表B

TableB.pk Column1
1         some-value
2         some-value
Select  Main.ID,Main.Column1 ,A.Column1,B.Column1
FROM    MainTable main
LEFT JOIN
        Table A
ON      Main.TableA.fk = A.TableA.pk
LEFT JOIN
        TableB b
ON      Main.TableB.fk =B.TableB.fk
WHERE   Main.ID =1

意味着

结果

  ID  Column1     A.Column1  B.Column1
  1   some-value   some-value  null

期待输出

 ID    column1         A.Column1
 1     some-value     some-value  

不应显示B.column1

当tableA外键值不为null时,如果在此处使用SELECT查询,则应从TableA获取所有详细信息 即时通讯使用RDBMS Microsoft Sql Server 2008

3 个答案:

答案 0 :(得分:0)

我不明白这里的问题。如果您不希望它显示B.Column1,请从B.Column1语句中取出Select

你现在有

选择Main.ID,A.Column1,B.Column1

将其更改为

选择Main.ID,A.Column1

根据您在下面的评论,您似乎在寻找CoalesceIsNull,具体取决于您使用的是哪个DBMS(您在问题中没有告诉我们)

这样的事情应该有效:

SELECT  
  Main.ID, Coalesce(A.Column1, B.Column1) as Column1
FROM    
  MainTable main
LEFT JOIN
  Table A
ON      
  Main.TableA.fk = A.TableA.pk
LEFT JOIN
  TableB b
ON
  Main.TableB.fk = B.TableB.fk
WHERE   
  Main.ID = 1

答案 1 :(得分:0)

请不要将此列放入SELECT列表中:

SELECT  Main.ID, A.Column1
FROM    MainTable main
LEFT JOIN
        Table A
ON      Main.TableA.fk = A.TableA.pk
LEFT JOIN
        TableB b
ON      Main.TableB.fk = B.TableB.fk
WHERE   Main.ID = 1

答案 2 :(得分:0)

从查询中删除B.Column1

Select Main.ID,A.Column1 FROM MainTable main LEFT JOIN Table A ON Main.TableA.fk=A.TableA.pk LEFT JOIN TableB b ON Main.TableB.fk =B.TableB.fk WHERE Main.ID =1