Мне нужно получить значения NULL в столбцах, если промежуточная таблица не применяется - PullRequest
0 голосов
/ 05 марта 2011

Я объединяю таблицы, где есть две отдельные схемы отношений, выглядящие так:

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 был нулевым для отношения ниже:

И 2-я схема отношений выглядит так:о TableA2)

Как бы вы сделали объединение, чтобы получить набор результатов с нулевыми значениями в A2ColumnId, как показано выше?

Ответы [ 2 ]

1 голос
/ 05 марта 2011

LEFT JOIN вместо обычного объединения заставит таблицу объединиться, даже если в нужной таблице нет данных, заполнив вместо нее null.Поэтому, когда вы присоединитесь к А1 и А2, вы сделаете это:

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;
0 голосов
/ 05 марта 2011
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

если я правильно понял.

...