Sbφrka dotaz∙ û str. 11

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φ

Sbφrka dotaz∙ str.12

Sbφrka dotaz∙ - ·vodnφ strana

SQL dotazy