sql server - присоединиться к нулевым значениям - PullRequest
3 голосов
/ 01 июня 2011

У меня есть две таблицы.У одной есть список ссылок, а другая содержит их стили, если они доступны.Последняя является разреженной таблицей, то есть она не имеет соответствующих строк, когда их значения равны нулю.Я запускаю следующий запрос:

select hl.*, hls.colorCode, hls.bold
from HeaderLinks hl, HeaderLinkStyles hls 
where hl.LinkId = hls.linkID
order by row asc, [column] asc

Я хочу изменить это так, чтобы в случае отсутствия строки для конкретной записи эти столбцы получали нулевые значения в наборе результатов.

Спасибо!

Ответы [ 5 ]

4 голосов
/ 01 июня 2011

Left Join

Select hl.*, hls.colorCode, hls.bold 
From HeaderLinks hl
Left Join HeaderLinkStyles hls on hl.LinkId = hls.linkID
order by row asc,[column] ASC
1 голос
/ 01 июня 2011

A left или full объединение заполнит строку с null, если совпадений не найдено:

select  *
from    HeaderLinks hl
full outer join
        HeaderLinkStyles hls 
on      hl.LinkId = hls.linkID 

Левое объединение заполняет только правую таблицу нулями, правое объединение только левой таблицей, а полное объединение заполняет оба. Для наглядной иллюстрации см. Визуальное объяснение соединений SQL .

1 голос
/ 01 июня 2011

Чтобы получить NULL для несуществующих записей, вам нужно использовать LEFT OUTER JOIN или RIGHT OUTER JOIN на таблице .......

Select hl.*, hls.colorCode, hls.bold From HeaderLinks hl
Left Join HeaderLinkStyles hls on hl.LinkId = hls.linkID order by row asc,[column] ASC

enter image description here

Проверка соединений здесь: Визуальное представление соединений SQL

0 голосов
/ 01 июня 2011

Вам нужно использовать LEFT JOIN

Select 
  hl.*, 
  hls.colorCode, 
  hls.bold 
from 
  HeaderLinks hl 
LEFT JOIN 
  HeaderLinkStyles hls on hl.LinkId = hls.linkID
order by 
  row asc,[column] ASC
0 голосов
/ 01 июня 2011

Вам необходимо использовать левое внешнее соединение

select hl.*, hls.colorCode, hls.bold
from HeaderLinks hl
    left join HeaderLinkStyles hls on
      hl.LinkId = hls.linkID  
order by row asc, [column] asc

Использование внешних соединений

...