Re: query with table alias

Поиск
Список
Период
Сортировка
От Michael Glaesemann
Тема Re: query with table alias
Дата
Msg-id 44047472-349B-11D9-9818-000A95C88220@myrealbox.com
обсуждение исходный текст
Ответ на query with table alias  ("Rodríguez Rodríguez, Pere" <prr@hosppal.es>)
Список pgsql-general
On Nov 12, 2004, at 7:48 PM, Rodríguez Rodríguez, Pere wrote:

> prr=# select foo.c1, f.c2 from foo f;  -- >>> Incorrect result <<<
>  c1 | c2
> ----+----
>   1 |  1
>   2 |  1
>   1 |  2
>   2 |  2
> (4 filas)

If you alias a table, you can only reference the table using the alias.
It is in effect renamed: foo is no longer foo. It is only f after you
alias foo to f.

> The result of the "select foo.c1, f.c2 from foo f" isn't correct, it
> do a cartesian product of foo table.

When you do reference foo, PostgreSQL adds foo to the FROM list if you
have the ADD_MISSING_FROM configuration parameter set to TRUE in
postgresql.conf.

Thus, PostgreSQL considers your query to be
SELECT foo.c1, f.c2 FROM foo f, foo;

which results in the Cartesian join your are seeing.

Some people like this, some people don't. (I'm one of the latter.) If
you would rather PostgreSQL throws an error in this situation, set
ADD_MISSING_FROM to FALSE.

Hope this helps.

Michael Glaesemann
grzm myrealbox com


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

Предыдущее
От: "Rodríguez Rodríguez, Pere"
Дата:
Сообщение: query with table alias
Следующее
От: "Patrick Fiche"
Дата:
Сообщение: Re: query with table alias