Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Автоматические внешние объединения

В Главе 14 , мы обсуждали внешнее объединение и показывали вам, как выполнять его, используя команду UNION. Некоторые программы базы данных имеют более непосредственный способ выполнения внешних объединений. В некоторых реализациях, вводимый знак " + " после предиката, может выводить строки которые удовлетворяют условию также как и строки, которые ему не удовлетворяют. В условии предиката может содержаться поле, совпадающее для обеих таблиц, и NULL значения будут вставлены там, где такого совпадения не будет найдено. Например, предположим, вы хотите видеть ваших продавцов и соответствующих им заказчиков, не исключая тех продавцов, которым не назначено ни одного заказчика ( хотя такого нет в наших типовых таблицах, но в действительности это возможно ) :

SELECT a.snum, sname, cname FROM Salespeople a, Customers b WHEREa.snum = b.snum(+);

Это является эквивалентом следующего объединения (UNION):

SELECT a.snum, sname, cname FROM Salespeople a, Customers b WHERE a.snum = b.snum UNION SELECT snum, sname, '_ _ _ _ _ _ _ _ _ _' FROM Salespeople WHERE snum NOT IN (SELECT snum FROM Customers);

Мы считаем что подчеркивания будут отображены NULL значениями( см. команду FORMAT ранее в этом приложении, где описывалось отображение NULL значениями).