SQLсервер в Linux -самостоятельное освоение пакета

       

Секции NATURAL и USING



Листинг 4.37. Секции NATURAL и USING

booktown=# SELECT title. last_name, first_name

booktown-# FROM books INNER JOIN authors AS a (author_id)

booktown-# USING (author_id)

booktown-# WHERE last_name = 'Geisel';

title | last_name | first_name

The Cat in the Hat | Geisel | Theodor Seuss

Bartholomew and the Oobleck | Geisel | Theodor Seuss

(2 rows)

booktown=# SELECT title, last_name, first_name

booktown-# FROM books NATURAL INNER JOIN authors AS a (author_id)

booktown-# WHERE lastjiame = 'Geisel';

title | last_name | first_name

The Cat in the Hat | Geisel | Theodor Seuss

Bartholomew and the Oobleck | Geisel | Theodor Seuss

(2 rows)

Первая команда SELECT в листинге4.37 назначает синоним authorjd первому полю таблицы authors (хотя в действительности это поле называется id). Идентификатор author_id передается в секцию USING, после чего PostgreSQL ищет в каждом наборе идентификатор поля с этим именем для объединения записей.

Внутренние объединения часто применяются на практике, но в некоторых ситуациях требуется выборка всех необходимых данных с использованием внешнего объединения. Чтобы попять суть различий между внутренними и внешними объединениями, достаточно разобраться, что происходит с записями, не входящими в установленную связь.

При внутреннем объединении все записи, для которых не находится соответствующего значения в других наборах (заданных при помощи ON или USING), просто игнорируются.



Содержание раздела