Re: Správná formulace SQL dotazu v PostgreSQL

Jan Mura jan.mura na volny.cz
Středa Březen 26 16:00:57 CET 2008


Dobrý den,

ten vnořený select je asi dost složitý a zbytečný.
Určitě by to chtělo groupovat
Myslím, že něco takového by fungovalo v Ora:

select count(kniha.id), kniha.autor
from kniha
group by kniha.id;

Nebo jak máte ty názvy.
Případně tam přidat i nějaký having víc než nula pro počet knih.
Snad by to mělo jít v Pg také.

Jan Mura
----- Original Message ----- 
From: "Jiří Volf" <konference na volfovi.net>
To: <linux na linux.cz>
Sent: Wednesday, March 26, 2008 2:24 PM
Subject: OT: Správná formulace SQL dotazu v PostgreSQL


Dobrý den,
dejme tomu, že mám databázi:
KNIHA(ID,NAZEV,AUTOR_ID) , AUTOR(ID,NAZEV)

požadavek je vypsat jméno a počet napsaných knih všech
autorů, kteří napsali alespoň jednu z nich.

Nejdříve jsem sestrojil něco jako:
select autor.nazev, (select count(kniha.id) from kniha where
kniha.autor_id=autor.id) as pocet_knih where pocet_knih>0;

jenomže to mi v postgre (7.4) nepracuje, píše to neznámý
sloupec "pocet_knih". Je v tomto nějaký problém?
Je to ve vyšších verzích OK? Nebo mám jen špatně
zafixováno, že by to mělo fungovat?

Tato formulace již funguje:

select autor.nazev, (select count(kniha.id) from kniha where
kniha.autor_id=autor.id) having (select count(kniha.id) from kniha where
kniha.autor_id=autor.id)>0;

Neprovádí se ale zde tento vnořený SQL dotaz dvakrát?

Díky.

JV

_______________________________________________
Linux mailing list
Linux na linux.cz
http://www.linux.cz/mailman/listinfo/linux





Další informace o konferenci Linux