2.2.9 Внешние соединенияПри выполнении соединения возможна ситуация, когда могут быть потеряны данные. В частности, если строка имеет значение, которое не удовлетворяет условию, заданному в предложении WHERE, эта строка не будет включена в результат соединения. Такая потеря может быть нежелательной, и для предотвращения подобных ситуаций был введен специальный тип соединения — внешнее соединение (outer join). Если нужно построить соединение таким образом, чтобы в результаты вошли каждая строка таблицы слева от ключевого слова JOIN, даже если для этой строки не имеется соответствия во второй таблице, то необходимо использовать следующий синтаксис: SELECT Name, Title Смысл этого оператора в том, что строки таблицы ARTIST соединяются со строками таблицы WORK, как и раньше, но теперь, если какая-то строка в таблице слева от ключевого слова JOIN (здесь это таблица ARTIST) не имеет соответствия в таблице, находящейся справа, эта строка все равно будет включена в результат. Такое соединение называется левым внешним соединением (left outer join). Для данных из табл. 1.1 и табл. 1.2 Результат этого запроса будет таким:
Правое внешнее соединение (right outer join) функционирует аналогичным образом, только в результат включаются все строки таблицы, находящейся справа от ключевого слова JOIN.
|