OT: Správná formulace SQL dotazu v PostgreSQL

Jiří Volf konference na volfovi.net
Středa Březen 26 14:24:18 CET 2008


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




Další informace o konferenci Linux