Sunday, September 28, 2008

Re: [GENERAL] subquery in FROM must have an alias

On Sun, 28 Sep 2008, Ashutosh Chauhan wrote:

> Hi all,
>
> This has been asked before and answered as well.
> http://archives.postgresql.org/pgsql-sql/2007-12/msg00002.php but I
> still cant figure out why postgres throws this error message even when
> I have provided the aliases. My query:
>
> select a,b
> from (billing.item JOIN (
> select *
> from ( billing.invoice JOIN billing.customer
> on (id_customer_shipped = customer_uid and
> address = 'pgh' ))
> as temp2 ))
> as temp;
>
> I have two from clauses so I have provided two corresponding alias
> names for those two from clauses.

If you break the above down a bit, you have:

select a,b
from
(
billing.item join
(select * from
(
billing.invoice join
billing.customer
on (id_customer_shipped = customer_uid and address='pgh')
)
as temp2
)
)
as temp;

What the system is complaining about is the subselect (select * from ... )
not having an alias. You've aliased the billing.invoice join
billing.customer one and (billing.item join (...)) one, but not the
subselect. In fact, I believe the two aliases you're using aren't strictly
necessary. Also, the above appears to be missing the condition for the
outermost join.

Maybe something like the following will work with a filled in on
condition:

select a,b
from
(
billing.item join
(select * from
(
billing.invoice join
billing.customer
on (id_customer_shipped = customer_uid and address='pgh')
)
)
as temp
on (...)
)

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

No comments: