Jeden zapeklity SQL dotaz

Radim Kubacki radim.kubacki na rtscs.cz
Čtvrtek Březen 30 11:08:44 CEST 2000


>select Osnova.IDUcet, sum(MD.Cena) as MDSuma,  sum(DAL.Cena) as DalSuma
> from Osnova
> left outer join PDenik MD on Osnova.IDUcet=MD.MDUcet
> left outer join PDenik DAL on Osnova.IDUcet=Dal.DalUcet
>group by Osnova.IDUcet
>

Zeby takhle?

select Osnova.IDUcet,
    sum(MD.Cena)/count(distinct DAL.rowid) as MDSuma,
    sum(DAL.Cena)/count(distinct MD.rowid) as DalSuma
from Osnova
    left outer join PDenik MD on Osnova.IDUcet=MD.MDUcet
    left outer join PDenik DAL on Osnova.IDUcet=Dal.DalUcet
group by Osnova.IDUcet

Prave proto, aby se to nezapocitavalo vicekrat. Misto rowid by sel pouzit i
nejaky klic z PDenik.
Holt SQL ma spoustu much, ktere muze clovek kritizovat. Treba by si to
clovek predstavoval takto:

select *
from
    (select Osnova.IDUcet, sum(MD.Cena) as MDSuma
    from Osnova
    left outer join PDenik MD on Osnova.IDUcet=MD.MDUcet
    group by Osnova.IDUcet) TMD
    outer join
    (select Osnova.IDUcet, sum(MD.Cena) as MDSuma
    from Osnova
    left outer join PDenik MD on Osnova.IDUcet=MD.MDUcet
    group by Osnova.IDUcet) TDAL on TMD.IDUcet = TDAL.IDUcet



Radim



Další informace o konferenci Test