Re: prefer (+) oracle notation

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: prefer (+) oracle notation
Дата
Msg-id 11952.971991739@sss.pgh.pa.us
обсуждение исходный текст
Ответ на prefer (+) oracle notation  ("Edmar Wiggers" <edmar@brasmap.com>)
Ответы RE: prefer (+) oracle notation  ("Edmar Wiggers" <edmar@brasmap.com>)
Список pgsql-general
"Edmar Wiggers" <edmar@brasmap.com> writes:
> I'm not sure about the standard, but I really like Oracle's notation for
> foreign keys:

>     select a.item_number, b.group_code_description
>     from items a, group_codes b
>     where a.group_code = b.group_code (+);

I beg to differ --- IMHO, Oracle's notation is brain dead.  If they had
stuck the (+) markers on FROM-list items, it would have been sort of
reasonable, but as is, it's incomplete and ambiguous.  Incomplete
because you can't specify an outer join against a table that's not
referenced anywhere in the WHERE clause.  Ambiguous because it's not
clear what it means if you reference several columns from the same table
in WHERE, and tag some of them with (+) and others not.  Does that mean
you get an outer join anyway?  Is it an error condition?  Maybe you
should implicitly get two FROM-list items, one outer joined and one not?

Worse, if you have more than two FROM-items it's very unclear what the
Oracle syntax means at all.  There is a big difference between
    (A CROSS JOIN B) LEFT JOIN C
and
    A CROSS JOIN (B LEFT JOIN C)
not to mention
    (A LEFT JOIN C) CROSS JOIN B
but who is to say which of these behaviors you will get from, say,
    select ... from A, B, C where a1 = b1 and a2 = c2 (+)
?  And if you reorder the terms in the WHERE, do you get a different
answer?  It gets a lot worse if more than one table is outer-joined.

I don't have any great love for the ISO syntax either; it's certainly
mighty verbose.  But at least you can tell what the heck it means.

            regards, tom lane

В списке pgsql-general по дате отправления:

Предыдущее
От: Neil Conway
Дата:
Сообщение: Re: MySQL -> pgsql
Следующее
От: DaVinci
Дата:
Сообщение: A stupid question :)