3.2.5. Сложные соединения
Хотя одна секция JOIN соединяет всего два набора данных, на практике соединения не ограничиваются двумя источниками. За набором, созданным посредством соединения, может следовать новая секция JOIN – по аналогии с тем, как перечисляются через запятую источники данных.
Пример соединения нескольких источников данных:
SELECT last_name, publisher, e.isbn, subject
FROM authors AS a
JOIN books AS b ON a.id = b.author_id
JOIN editions AS e ON b.id = e.book_id
JOIN publishers AS p ON e.publisher_id = p.id
JOIN subjects AS s ON b.subject_id = s.id;
Хотя таблица books участвует в соединении, ни одно из ее полей не входит в итоговый набор. Включение таблицы books в секции JOIN предоставляет критерии для соединения других таблиц. Все таблицы, поля которых возвращаются в результате запроса, связываются с другими таблицами через поле id таблицы books (кроме таблицы publishers, которая связывается с таблицей editions по полю publisher_id).
Лабораторная работа 3
Выполнить следующие запросы к базе данных booktown:
Код isbn, дата издания, цена продажи и количество экземпляров для всех изданий на складе.
Дата покупки, код покупателя, дата издания, тип обложки для всех покупок. Отсортировать по дате издания.
Дата покупки, фамилия и имя покупателя для всех покупок. Отсортировать по фамилии и имени покупателя.
Список авторов с названиями написанных ими книг, отсортированный по авторам.
Список названий книг и фамилий их авторов с указанием темы, отсортировать по названию книги.
Фамилия и имя покупателя, название купленной им книги для всех покупок. Отсортировать по покупателям.
Все пары: название издательства, фамилия автора (произведение которого было издано данным издательством). Упорядочить по названию издательства.
Фамилия и имя покупателя, название издательства купленной им книги для всех покупок. Упорядочить по покупателю.
Список номеров ISBN и тип обложки для книг в бумажном переплете с указанием издательств, выпустивших книгу; список отсортировать по издательствам.
Фамилия автора и название тем, которые он отразил в своих произведениях. Упорядочить по автору.
Код ISBN, название книги, фамилия автора, затраты магазина на закупку всех имеющихся в наличии экземпляров. Отсортировать так, чтобы в начале списка шли самые малозатратные издания.
Название и число экземпляров книг, количество которых на складе равно нулю. Упорядочить по названию.
Название и дата продажи книги, которая была куплена самой первой в магазине.
Фамилия и имя автора книги, купленной предпоследней. Указать также дату продажи.
Название книги, дата издания, первое или повторное издание для всех изданий (если издание 1, то «первое»; иначе – «повторное»). Отсортировать по названию книги.
Название книги, издательство и тип обложки для книг, изданных издательством Roc в твердом переплете. Упорядочить по названию книги.
Название и тема книг, относящихся к темам Science и Science Fiction. Отсортировать по названию книги.
Названия книг, которые приобрела Annie Jackson (с указанием покупателя).
Название и издатель книг, изданных не издательствами Ace Books, Roc, Penguin, Doubleday, Random House.
Название книги и адрес издательства для книг, изданных не в городе New York.