Таблицы в соединениях
При сочетании данных из нескольких таблиц необходимо решить, какие таблицы будут использоваться для этого. При принятии этого решения следует учитывать ряд моментов.
Сочетание трех или более таблиц — каждая операция JOIN соединяет две таблицы. Тем не менее, можно воспользоваться несколькими операциями JOIN в одном запросе, чтобы собрать данные из любого количества таблиц. Поскольку результатом каждой операции JOIN в конечном итоге является таблица, этот результат можно использовать как операнд в последующей операции соединения. Например, чтобы создать результирующий набор, каждая строка которого содержит сведения о конкретной книге, ее авторе и проценте роялти, который получает этот автор, необходимо объединить данные из трех таблиц: "authors", "titles" и "titleauthor". Конечный код SQL может выглядеть следующим образом:
SELECT title, au_fname, au_lname, royaltyper FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id
Использование таблицы только для соединения остальных — таблицу можно включить в соединение даже в том случае, если нет необходимости включить в результирующий набор какие-либо из столбцов этой таблицы. Например, чтобы создать результирующий набор, в котором каждая из строк описывает пару "издание-магазин", которая указывает, в каком магазине продается соответствующее издание, следует включить столбцы из двух таблиц: "titles" и "stores". Однако для определения магазина, продающего конкретное издание, необходимо использовать третью таблицу, "sales". Конечный код SQL может выглядеть следующим образом:
SELECT title, stor_name FROM titles INNER JOIN sales ON titles.title_id = sales.title_id INNER JOIN stores ON sales.stor_id = stores.stor_id
Обратите внимание, что в результирующий набор из таблицы "sales" не включается ни один столбец.
Использование таблицы дважды в одном запросе — одну и ту же таблицу можно использовать два (или более) раза в одном запросе. Дополнительные сведения см. в разделе Использование таблицы дважды в одном запросе.
Использование вместо таблицы другого объекта — вместо таблицы можно использовать запрос, представление или пользовательскую функцию, которые возвращают таблицу. Дополнительные сведения см. в разделе Практическое руководство. Создание запросов с использованием других источников, помимо таблиц.
Дополнительные сведения о добавлении таблиц в запросы см. в разделе Практическое руководство. Добавление таблиц в запросы.