DML: Выборка из нескольких таблиц

Часто возникает ситуация, когда выборку данных надо производить из отношения, которое является результатом слияния (join) двух других отношений. Например, нам нужно получить из базы данных publications информацию обо всех печатных изданиях в виде следующей таблицы:

|название_книги

| год_выпуска

издательство

Для этого СУБД предварительно должна выполнить слияние таблиц titles и publishers, а затем произвести выборку из полученного отношения.

Для выполнения операции такого рода в операторе SELECT после ключевого слова FROM указывается список таблиц, по которым производится поиск данных. После ключевого слова WHERE указывается условие, по которому производится слияние.

Для того чтобы выполнить данный запрос, следует дать команду:

SELECT titles.title,titles.yearpub,publishers.publisher

FROM titles,publishers

WHERE titles.pub_id=publishers.pub_id.

Ниже дан пример, где одновременно задаются условия слияния и выборки (результат предыдущего запроса ограничивается изданиями после 1996 г.):

SELECT titles.title,titles.yearpub,publishers.publisher FROM titles,publishers

WHERE titles.pub_id=publishers.pub_id AND titles.yearpub>1996.

Обратим внимание на то, что если в разных таблицах присутствуют одноименные поля, то для устранения неоднозначности перед именем поля указывается имя таблицы и знак «.» (точка). (Хорошее правило: имя таблицы указывать всегда!)

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

SELECT authors.author,titles.title,titles.yearpub,publishers.publisher FROM titles,publishers,titleauthors WHERE titleauthors.au_id=authors.au_id AND titleauthors.title_id=titles.title_id AND titles.pub_id=publishers.pub_id AND titles.yearpub > 1996.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >