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

       

Объединение нескольких источников данных



Листинг 4.39. Объединение нескольких источников данных

booktown=# SELECT a.last_name, p.name AS publisher, e.isbn, s.subject

booktown-# FROM ((((authors AS a INNER JOIN books AS b</userinput>

booktown(# ON (a.id = b.author_id))</userinput>

booktown(# INNER JOIN editions AS e ON (e.book_id = b.id))

booktown(# INNER JOIN publishers AS p ON (p.id = e.publisher_id))

booktown(# INNER JOIN subjects AS s ON (s.id = b.subjected));

1ast_name | publisher | isbn | subject

Hogarth | Watson-Guptill Publications | 0823015505 | Arts

Brown | HarperCollins | 0694003611 | Children's Books

Geisel | Random House | 0394800753 | Children's Books

Geisel | Random House | 039480001X | Children's Books

Geisel | Random House | 0394900014 | Children's Books



Bourgeois | Kids Can Press | 0590445065 | Children's Books

Bianco | Penguin | 0679803335 | Classics

Lutz | O'Reilly & Associates | 0596000855 | Computers

Alcott | Henry Holt & Company. Inc. | 0760720002 | Drama

Рое | Mojo Press | 1885418035 | Horror

Рое | Books of Wonder | 0929605942 | Horror

King | Doubleday | 0451160916 | Horror

King | Doubleday | 0385121679 | Horror

Clarke | Roc | 0451457994 | Science Fiction

Clarke | Roc | 0451198492 | Science Fiction

Herbert | Ace Books | 0441172717 | Science Fiction

Herbert | Ace Books | 044100590X | Science Fiction

(17 rows)

В листинге 4.39 можно заметить одно любопытное обстоятельство: хотя таблица books участвует в объединении, ни одно из ее полей не входит в итоговый набор. Включение таблицы books в секции JOIN предоставляет критерии для объединения других таблиц. Все таблицы, поля которых возвращаются в результате запроса, связываются с другими таблицами через поле id таблицы books (кроме таблицы publishers, которая связывается с таблицей editions по полю publisher_id).



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