【问题标题】:I need to get NULL values in Columns if Intermediate table doesn't apply如果中间表不适用,我需要在列中获取 NULL 值
【发布时间】:2011-03-05 02:56:46
【问题描述】:

我正在加入有两个独立关系方案的表,如下所示:

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 和 B ,我需要看到 A2colId 为空以下关系:

第二个关系方案如下所示: TableA1->TableB-TableC

如上所示,您将如何进行连接以获取 A2ColumnId 中为空的结果集?

【问题讨论】:

  • 不知道我的编辑发生了什么,但请保持与以前一样,突出显示整个内容并单击 {} 按钮使其看起来不错。

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


【解决方案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;

【讨论】:

    【解决方案2】:
    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
    

    如果我没听错的话。

    【讨论】:

      猜你喜欢
      • 2019-03-04
      • 1970-01-01
      • 2015-01-17
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多