From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | terry(at)greatgulfhomes(dot)com |
Cc: | "Postgres (E-mail)" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: query problem in 7.2.1: serious planner issue |
Date: | 2002-07-04 18:22:43 |
Message-ID: | 4587.1025806963@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
terry(at)greatgulfhomes(dot)com writes:
> I cannot sort on a field that I join across tables. Here are the examples:
> If I do this:
> ORDER BY lot_id
> Produces the error:
> Error while executing the query; ERROR: ORDER BY 'lot_id' is ambiguous
It does? I tried to duplicate this:
test72=# create table offers(lot_id int);
CREATE
test72=# create table lots(lot_id int, project_id int);
CREATE
test72=# create table lots_deleted(lot_id int, project_id int);
CREATE
test72=# SELECT offers.lot_id, lots.project_id FROM offers, lots
test72-# WHERE offers.lot_id = lots.lot_id
test72-# UNION
test72-# SELECT offers.lot_id, lots_deleted.project_id FROM offers, lots_deleted
test72-# WHERE offers.lot_id = lots_deleted.lot_id
test72-# ORDER BY lot_id;
lot_id | project_id
--------+------------
(0 rows)
Your third example (with AS) works fine too once I corrected the typos
(offer.lot_id -> offers.lot_id, etc).
In general, you can ORDER BY the column name or column number of
any output column of the UNION construct. If you want to use a
name then you'd better be sure only one output column has that name.
This is per SQL92 spec; we don't offer any extensions to sort on
non-output columns when we're dealing with a UNION.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Herbert Liechti | 2002-07-04 18:27:35 | Re: query problem in 7.2.1: serious planner issue |
Previous Message | Mike Harding | 2002-07-04 18:13:44 | Re: repeatable crash generating two column index |