如果中间表不适用,我需要在列中获取NULL值

时间:2011-03-05 02:56:47

标签: sql sql-server-2005 sql-server-2000

我正在加入表格,其中有两个单独的关系方案如下:

TableA1    ->    TableA2      ->  TableB     ->  TableC    : <<< RELATIONSHIP A
enter code here

输出需要如此:

   A1columnId   A2columnId  BcolumnId   CcolumnId
   1            1           1           1
   2            null        2           2
   3            null        3           3
   4            2           4           4
   5            null        5           5

如果存在这两种关系A&amp; B,我需要看到A2colId为以下关系为null:

第二个关系计划如下: 表A1->表B-TableC&lt;&lt;&lt;&lt;关系B(该方案对TableA2没有任何线索)

如上所述,如何在A2ColumnId中使用null来获取结果集?

2 个答案:

答案 0 :(得分:1)

即使右表中没有数据,

LEFT JOIN代替常规联接也会强制表加入,在其位置填入null。所以当你加入A1和A2时你会这样做:

SELECT * 
  FROM A1 
       LEFT JOIN A2 
          ON A1.idlink = A2.idlink 
       JOIN B 
          ON A1.id = B.id 
       JOIN C 
          ON A1.id = C.id;

答案 1 :(得分:0)

SELECT *
FROM TableA A1
  LEFT JOIN TableA A2 ON A1.ColumnId1 = A2.ColumnId2
  INNER JOIN TableB B ON B.ColumnId IN (A1.ColumnId1, A2.ColumnId2)
  INNER JOIN TableC C ON B.ColumnId = C.ColumnId

如果我找对你。