-3

主表

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 外键值不为空时,如果上面使用的 SELECT 查询在此处
使用 RDBMS Microsoft Sql Server 2008 ,它应该从 TableA 获取所有详细信息

4

3 回答 3

0

我不明白这里的问题。如果您不希望它显示B.Column1,请B.Column1从您的Select声明中删除。

你现在有

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

将其更改为

选择 Main.ID、A.Column1

根据您在下面的评论,您似乎正在寻找Coalesceor IsNull,具体取决于您使用的 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
于 2013-03-29T14:21:05.037 回答
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
于 2013-03-29T14:21:11.147 回答
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
于 2013-03-29T14:21:16.710 回答