P°φklad 19
Zadßnφ: VypiÜte nßzvy firem, kterΘ majφ faktury za vφce ne₧ 5000,- KΦ.
Popis °eÜenφ: V tomto p°φkladu ukß₧eme pou₧itφ subdotazu v Φßsti SELECT. Subdotaz pro ka₧dΘ Φφslo faktury vrßtφ jmΘno firmy. Toto jmΘno lze pou₧φt ve v²Φtu sloupc∙ dotazu.
SQL:
SELECT DISTINCT (SELECT nazev
FROM Firmy
WHERE Firmy.cislo=Faktury.firma) AS Nazev
FROM Faktury
WHERE castka > 5000
Poznßmky:
a) Sloupec Nazev odpov∞di nenφ samoz°ejm∞ editovateln².
b) StejnΘho v²sledku (ale s mo₧nostφ editace odpov∞di) lze dosßhnout takto:
SELECT Firmy.nazev
FROM Firmy
WHERE Firmy.cislo =ANY (SELECT Faktury.firma
FROM Faktury
WHERE castka > 5000
AND Faktury.firma=Firmy.cislo)
c) StejnΘho v²sledku lze dosßhnout i bez subdotaz∙, pomocφ JOINu, nap°. takto:
SELECT DISTINCT Firmy.nazev
FROM Faktury,Firmy
WHERE (castka > 5000)
AND (Firmy.cislo=Faktury.firma)
d) Pokud by nßm staΦil jen poΦet firem, je t°eba pou₧φt funkce COUNT. Otßzkou z∙stßvß umφst∞nφ klauzule DISTINCT:
SELECT DISTINCT COUNT(Firmy.nazev)
nedß sprßvn² v²sledek, je t°eba DISTINCT p°ed°adit COUNT:
SELECT COUNT (DISTINCT Firmy.nazev)
FROM Faktury,Firmy
WHERE (castka > 5000)
AND (Firmy.cislo=Faktury.firma)
PokraΦovßnφ