Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 синтаксис select'a  [new]
navechok
Guest
SELECT   *
  FROM       DUAL d1
         JOIN
                 DUAL d2
             JOIN
                     DUAL d3
             ON d2.dummy = d3.dummy
         ON d2.dummy = d1.dummy;
Почему такой синтаксис возможен, однако в синтаксическую диаграмму он никак не вписывается?
Т.е. если верить диаграмме то после join должен обязательно идти on.
11 фев 11, 13:41    [10220622]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис select'a  [new]
-2-
Member

Откуда:
Сообщений: 15330
navechok,

в диаграмах не рисуют, но во многих конструкциях скобки можно опускать.
11 фев 11, 13:48    [10220682]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис select'a  [new]
navechok
Guest
-2-,

я не умею читать синтаксические диаграммы?
Внимательно ведем пальчиком по этой диаграмме, выходим на table_reference, но это
    DUAL d2
             JOIN
                     DUAL d3
             ON d2.dummy = d3.dummy
туда никак не вписывается.
11 фев 11, 14:11    [10220921]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис select'a  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
-2-,
+=похоже на правду

SQL> SELECT   *
  2    FROM       DUAL d1
  3           JOIN(
  4                   DUAL d2
  5               JOIN
  6                       DUAL d3
  7               ON d2.dummy = d3.dummy
  8              )
  9           ON d2.dummy = d1.dummy;
 
DUMMY DUMMY DUMMY
----- ----- -----
X     X     X

Однакож table_reference вроде не должен бы содержать Join, скобки как бы не причем
11 фев 11, 14:13    [10220940]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис select'a  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
navechok
-2-,

я не умею читать синтаксические диаграммы?
Внимательно ведем пальчиком по этой диаграмме, выходим на table_reference, но это
    DUAL d2
             JOIN
                     DUAL d3
             ON d2.dummy = d3.dummy
туда никак не вписывается.

правильно. вы просто ведёте пальчиком не по той диаграмме. смотрите на одну диаграмму выше
11 фев 11, 14:15    [10220965]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис select'a  [new]
Сергей Арсеньев
Member

Откуда:
Сообщений: 4118
Выдержка из одно очень старого документа:

Format

<table reference> ::=
<table name> [ [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ] ]
| <derived table> [ AS ] <correlation name>
[ <left paren> <derived column list> <right paren> ]
| <joined table>
11 фев 11, 14:32    [10221167]     Ответить | Цитировать Сообщить модератору
 Re: синтаксис select'a  [new]
-2-
Member

Откуда:
Сообщений: 15330
navechok
я не умею читать синтаксические диаграммы?
Конечно, самолюбие тешит, что оракл не умеет их рисовать. Часто синтаксис действительно допускает некоторые непрорисованные в документации конструкции, которые просто не играют роли
select max(dummy) keep (dense_rank  first пофиг by null) from dual;
или иногда меняют принцип работы оператора, иногда рисунки дополняются буквотекстом:
SELECT
When you join more than two row sources, you can use parentheses to override default precedence. For example, the following syntax:

SELECT ... FROM a JOIN (b JOIN c) ...

results in a join of b and c, and then a join of that result set with a.
11 фев 11, 14:35    [10221212]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить