|
![]() | Strana 9 (subdotaz) | ![]() | Sbφrka p°φklad∙ SQL dotaz∙ | Strana 11 (SELECT subdotaz, COUNT DISTINCT) | ![]() |
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
![]() | Strana 9 (subdotaz) | ![]() | Sbφrka p°φklad∙ SQL dotaz∙ | Strana 11 (SELECT subdotaz, COUNT DISTINCT) | ![]() |