Поделиться через


Таблицы в соединениях

При сочетании данных из нескольких таблиц необходимо решить, какие таблицы будут использоваться для этого. При принятии этого решения следует учитывать ряд моментов.

  • Сочетание трех или более таблиц — каждая операция 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" не включается ни один столбец.

  • Использование таблицы дважды в одном запросе — одну и ту же таблицу можно использовать два (или более) раза в одном запросе. Дополнительные сведения см. в разделе Использование таблицы дважды в одном запросе.

  • Использование вместо таблицы другого объекта — вместо таблицы можно использовать запрос, представление или пользовательскую функцию, которые возвращают таблицу. Дополнительные сведения см. в разделе Практическое руководство. Создание запросов с использованием других источников, помимо таблиц.

Дополнительные сведения о добавлении таблиц в запросы см. в разделе Практическое руководство. Добавление таблиц в запросы.

См. также

Ссылки

Соединить свойства

Другие ресурсы

Выполнение запросов с помощью соединений

Конструирование запросов и представлений