Skip site navigation (1) Skip section navigation (2)

Re: subquery in FROM must have an alias

From: "Ashutosh Chauhan" <ashutosh(dot)chauhan(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: subquery in FROM must have an alias
Date: 2008-09-29 21:58:44
Message-ID: 54de02ae0809291458y2df00593s94b8aaf715104642@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-general
Thanks to Stephan and Hubert for their replies. Using your answers I
was able to solve the problem. It turned out that its a natural join
that I wanted.

Thanks for quick help,
Ashutosh

On Sun, Sep 28, 2008 at 10:18, Stephan Szabo
<sszabo(at)megazone(dot)bigpanda(dot)com> wrote:
> 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 (...)
>  )
>
>
>

In response to

pgsql-general by date

Next:From: Tommy GibbonsDate: 2008-09-29 22:03:04
Subject: Sample databases
Previous:From: Greg SmithDate: 2008-09-29 21:53:02
Subject: Re: PostgreSQL Cache

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group