PG: co muze byt v HAVING/WHERE/ORDER BY?
Honza Pazdziora
adelton na informatics.muni.cz
Úterý Říjen 29 10:29:23 CET 2002
On Mon, Oct 28, 2002 at 05:31:25PM +0100, Jan Kasprzak wrote:
>
> mam PostgreSQL, snazim se z tabulky vybrat primarni klic a hodnotu, kterou
> vypocitam z ostatnich atributu, ale jen takove radky, ktere tuhle hodnotu
> maji vyssi nez nejaka mez. Lze tohle nejak udelat, aniz bych tu hodnotu
> musel pocitat jednak v SELECT primarni_klic, ta_hodnota a jednak v
> HAVING/WHERE? Kdyz si tu hodnotu pojmenuju, tak podle ni muzu delat
> ORDER BY, ale pokus o pouziti v HAVING/WHERE mi rika "undefined attribute":
>
> > select primarni_klic, (9876*attr1-attr2*attr3) as hodnota
> where hodnota > 12345 order by hodnota
> ERROR: Attribute 'hodnota' not found
>
> Existuje nejaka cista cesta, jak tohle udelat, aniz bych vyraz pro vypocet
> "hodnota" musel vypisovat 2x? Napada me udelat view nebo udelat funkci,
> ale porad mi je divne proc v order by ta "hodnota" byt muze, zatimco
> v having nebo where nikoliv.
Protoze to poradi vypoctu je nejdriv vyhodnotit where, aby se vedelo,
s cim pracujeme, pak spocitat ty polozky v selectu, aby se vedelo, co
se vraci, a pak nad tim provest agregace a razeni.
Domnivam se, ze jedna z moznosti by mohla byt
select * from (
select primarni_klic, (9876*attr1-attr2*attr3) as hodnota
from tabulka
)
where hodnota > 12345
order by hodnota
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------
Další informace o konferenci Databases