Ahoj, potřeboval bych poradit s následujícím příkladem:
Zjistěte jména trpaslíků, u kterých neměla Sněhurka evidováno do konce roku 2011, že je „Upovídaný“. Pro všechny tyto trpaslíky zjistěte, kolik vlastností u nich Sněhurka na přelomu roku 2011/2012 evidovala. Řádky na výstupu budou seřazeny podle jmen trpaslíků v abecedním pořadí sestupně. Jméno trpaslíka bude napsané velkými písmeny
První část s upovídaností jsem vyřešil takto. Jména to vyhodí správná, avšak celkový počet vlastností správný není, protože je zde omezení where a já potřebuji připojit ke jménu, dalo by se říci to samé, ale bez použití omezovacích podmínek.
select
jmeno,
count(*) as celkovy_pocet_vlastnosti
from
a_o_snehurce.trpaslici trp
join
a_o_snehurce.poznatky poz
on
trp.id_trpaslika = poz.id_trpaslika
join
a_o_snehurce.vlastnosti vl
on
poz.id_vlastnosti = vl.id_vlastnosti
where
poz.zaznamenano < '31.12.2011'
and
vl.vlastnost != 'Upovídaný'
group by
jmeno;
Správný dotaz, který vyhazuje celkový počet vlastností jsem vyřešil takto:
select
jmeno,
count(vl.vlastnost) as celkovy_pocet_vlastnosti
from
a_o_snehurce.trpaslici trp
join
a_o_snehurce.poznatky poz
on
trp.id_trpaslika = poz.id_trpaslika
join
a_o_snehurce.vlastnosti vl
on
poz.id_vlastnosti = vl.id_vlastnosti
group by
jmeno;
Takže se jedná skoro o to samé, jak v prvním příkladě s jediným rozdílem použití omezujících podmínek. Teď mi jde ale o to, zobrazit jméno z prvního dotazu a počet vlastností z dotazu druhého.
Děkuji za vaši pomoc.