Re: order by and union - Mailing list pgsql-bugs

From Peter Eisentraut
Subject Re: order by and union
Date
Msg-id Pine.LNX.4.30.0107111949440.679-100000@peter.localdomain
Whole thread Raw
In response to order by and union  (Benoit Lion <Benoit.Lion@ac-grenoble.fr>)
List pgsql-bugs
Benoit Lion writes:

> select nmn_can,pre_can,dat_nai,dci_sai,cnd.cod_spe,cnd.cod_pa1,decision
> , cnd.cod_pa2
> >from  cnd,cnd_grp, decision where cnd.cod_eta='0731043M'
> and cnd.num_can=cnd_grp.num_can and cnd_grp.typ_grp='D'
> and cnd_grp.dci_sai=decision.cod_dec
>
> union
>
> select nmn_can,pre_can,dat_nai,dci_sai,cnd.cod_spe,cnd.cod_pa1,decision
> , cnd.cod_pa2
> >from cnd,cnd_grp, decision where cnd.num_can=cnd_grp.num_can and
> cnd_grp.typ_grp='D'
> and cnd_grp.dci_sai=decision.cod_dec and cnd.cod_cat='520'
> and cnd.cod_eta in ( select cod_aff from affichage where
> cod_eta='0731043M' and cnd.cod_spe=affichage.cod_spe)
>
> order by cnd.cod_spe, cnd.cod_pa1,decision,nmn_can
>
> so i replace the orber by :
>
> order by 5,6,7,1

This is correct.  The table names from the union branches are not in
scope for the order by.  Consider this case

select cnd.cod_spe from cnd
union
select cnd.cod_spe from (select relname from pg_class) as cnd (cod_spe)
order by cnd.cod_spe;

Which "cnd" is meant here?  However, you should be able to write

order by cod_spe;

--
Peter Eisentraut   peter_e@gmx.net   http://funkturm.homeip.net/~peter

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: ERROR: deferredTriggerGetPreviousEvent: event for tuple (0,9) not found
Next
From: Bruce Momjian
Date:
Subject: Re: COPY TO looses on view