Сервер Sql - Синтаксис внутреннего соединения с двумя соединениями

Arrays.fill() . Метод перегружен для разных типов данных, и существует даже вариация, которая заполняет только определенный диапазон индексов.

1
задан Carra 18 January 2019 в 15:37
поделиться

1 ответ

Да. Я обычно рекомендую людям думать об этом, как будто JOIN действует так же, как открывающая скобка (, а ON действует так же, как закрывающая скобка ). Тогда обычные правила, которые вы использовали для сопоставления скобок, сообщают вам , какое предложение ON относится к , который JOIN, и дает вам некоторый контекст для определения, какие имена / псевдонимы таблиц находятся в области.

Таким образом, этот запрос эффективно объединяет таблицу B с таблицей C, а затем соединяет A с , что объединяет результат.

Обычно я рекомендовал бы против этого, когда просто использовал INNER JOIN s - вы можете легко переставить таблицы так, чтобы следовать более «нормальному» паттерну JOIN / ON / JOIN / ON. Вы получите тот же логический результат из этого запроса 1 :

SELECT *
FROM Table_B B
INNER JOIN Table_C C
  ON C.Id = B.Id
INNER JOIN  Table_A A
  ON B.Id = A.Id

Обратите внимание, что этот описан в документации , если вы внимательно прочитали:

<table_source> ::=   
{  
    table_or_view_name [ [ AS ] table_alias ]   
        [ <tablesample_clause> ]   
        [ WITH ( < table_hint > [ [ , ]...n ] ) ]   
    ...
    | <joined_table>
    ...

И

<joined_table> ::=   
{  
    <table_source> <join_type> <table_source> ON <search_condition>
    ...

Итак, в <joined_table> что идет слева от <join_type>? Любой <table_source>. А что идет справа от <join_type>? Любой <table_source>. И один из них или оба могут сами по себе быть <joined_table>.

«Нормальная» форма, на которую вы ссылаетесь в своем вопросе, - это то, что выпадает, если мы только позволим себе использовать <joined_table> в левой позиции другого <joined_table>.


1 Хотя если вы полагаетесь на порядок столбцов , а не на имена столбцов , столбцы будут в другом порядке из-за использования SELECT *. Но вы не должны полагаться на порядки столбцов.

0
ответ дан Damien_The_Unbeliever 18 January 2019 в 15:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: