Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше
Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике
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.