602SQL-┌plnß dokumentace Index   Tisk  

Sbφrka dotaz∙ û str. 10

P°φklad 18

Zadßnφ: Vyberte firmy, kterΘ majφ faktury za vφce ne₧ 10000,- KΦ.

Popis °eÜenφ: Zvolφme op∞t °eÜenφ se subdotazem. Subdotaz pro ka₧dou firmu spoΦte jejφ faktury. Pak u₧ staΦφ subdotaz porovnat s konstantou 10000.

SQL:

    SELECT A.nazev
    FROM Firmy A
    WHERE 10000 < (SELECT SUM(castka)
                   FROM Faktury B
                   WHERE A.cislo=B.firma)

Poznßmky:

a) Zde pou₧it² subdotaz se odliÜuje od subdotaz∙ v p°edeÜl²ch p°φkladech û pro ka₧d² zßznam tabulky Firmy mß subdotaz jinou hodnotu.

b) Pokud bychom cht∞li vypsat tytΘ₧ firmy a jejich obraty, musφme pou₧φt variantu dotazu bez subdotazu:

    SELECT A.nazev, SUM(B.castka) AS suma
    FROM Firmy A, Faktury B
    WHERE A.cislo=B.firma
    GROUP BY B.firma
    HAVING 10000 < SUM(B.castka)

c) vÜimn∞te si, ₧e dotaz se subdotazem je editovateln², zatφmco dotaz s propojenφm nikoliv.

d) obdobn² v²sledek lze zφskat takΘ s vyu₧itφm subdotazu ve FROM:

    SELECT nazev, suma
    FROM Firmy A JOIN (SELECT firma,SUM(castka) AS suma
                       FROM Faktury B
                       GROUP BY B.firma)
               ON (A.cislo=B.firma)
    WHERE 10000 < suma