Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


2.2.9 Внешние соединения

При выполнении соединения возможна ситуация, когда могут быть по­теряны данные. В частности, если строка имеет значение, которое не удо­влетворяет условию, заданному в предложении WHERE, эта строка не будет включена в результат соединения. Такая потеря может быть неже­лательной, и для предотвращения подобных ситуаций был введен специ­альный тип соединения — внешнее соединение (outer join).

Если нужно построить соединение таким образом, чтобы в результаты вошли каждая строка таблицы слева от ключевого слова JOIN, даже если для этой строки не имеется соответствия во второй таблице, то необходимо использовать следующий синтаксис:

SELECT Name, Title
FROM ARTIST LEFT JOIN WORK
ON WORK.ArtistID = ARTIST.ArtistID;

Смысл этого оператора в том, что строки таблицы ARTIST соединяют­ся со строками таблицы WORK, как и раньше, но теперь, если какая-то строка в таблице слева от ключевого слова JOIN (здесь это таблица ARTIST) не имеет соответствия в таблице, находящейся справа, эта стро­ка все равно будет включена в результат. Такое соединение называется левым внешним соединением (left outer join). Для данных из табл. 1.1 и табл. 1.2 Результат этого запроса будет таким:

Tobey

Mystic Fabric

Miro

Mi Vida

Tobey

Slow Embers

Tobey

Mystic Fabric

Chagall

Northwest by Night

Moos

 

Matisse

 

Klee

 

Kandinsky

 

Правое внешнее соединение (right outer join) функционирует аналогич­ным образом, только в результат включаются все строки таблицы, нахо­дящейся справа от ключевого слова JOIN.

 



<< ПредыдущаяОглавлениеСледующая >>