Sbφrka dotaz∙ û str. 7

P°φklad 13

Zadßnφ: Zjist∞te obraty a poΦty faktur firem po m∞sφcφch.

SQL:

    SELECT Firmy.nazev, Month(dat1) AS M∞sφc, 
      COUNT(Faktury.cislo) AS PoΦet, 
      SUM(Faktury.castka) AS Suma_KΦ
    FROM Faktury, Firmy
    WHERE Faktury.firma= Firmy.cislo
    GROUP BY Firmy.nazev,Month(dat1)

Poznßmka:

Pro skupinu je pou₧ita hodnota v²razu, mφsto funkce jazyka Month by Ülo pou₧φt i SQL funkci EXTRACT ve tvaru

    EXTRACT (MONTH FROM dat1).

P°φklad 14

Zadßnφ: VypiÜte seznam vÜech firem a poΦet jejich faktur, vΦetn∞ t∞ch firem, kterΘ nemajφ jeÜt∞ ani jednu fakturu.

SQL:

    SELECT Firmy.nazev, COUNT(Faktury.cislo)
    FROM Firmy LEFT OUTER JOIN Faktury
        ON (Firmy.cislo=Faktury.firma)
    GROUP BY Firmy.nazev

Poznßmky:

a) Zajφmav∞jÜφ by to bylo v p°φpad∞, kdyby nßs zajφmaly pouze faktury jednoho druhu. Kam umφstit podmφnku Faktury.druh=2?

Sprßvnß odpov∞∩ je do podmφnky JOINu za ON:

    SELECT Firmy.nazev, COUNT(Faktury.cislo)
    FROM Firmy LEFT OUTER JOIN Faktury 
        ON (Firmy.cislo=Faktury.firma AND Faktury.druh=2)
    GROUP BY Firmy.nazev

Kdyby se podmφnka umφstila do Φßsti WHERE

    SELECT Firmy.nazev, COUNT(Faktury.cislo)
    FROM Firmy LEFT OUTER JOIN Faktury 
        ON (Firmy.cislo=Faktury.firma)
    WHERE Faktury.druh=2
    GROUP BY Firmy.nazev

zcela by se eliminoval ·Φinek vn∞jÜφho propojenφ, nebo¥ ty faktury, kterΘ jsou v dotazu majφ dφky OUTER JOINu hodnotu druh rovno NULL.

b) Je pou₧ito jedno vn∞jÜφ propojenφ. Pokud by existovala dalÜφ tabulka relaΦn∞ svßzanß s tabulkou Faktury (nazvanß Polozky) pres dvojici sloupc∙ id_fakt, je mo₧nΘ vytvo°it dotaz se dv∞ma vn∞jÜφmi propojenφmi:

    SELECT *
    FROM Firmy LEFT OUTER JOIN Faktury 
                 LEFT OUTER JOIN Polozky ON (Faktury.id_fakt=Polozky.id_fakt) 
         ON (Firmy.cislo=Faktury.firma)

nebo je mo₧nΘ uzßvorkovat

    SELECT *
    FROM (Firmy LEFT OUTER JOIN Faktury ON (Firmy.cislo=Faktury.firma))
               LEFT OUTER JOIN Polozky ON (Faktury.id_fakt=Polozky.id_fakt) 
         

PokraΦovßnφ

Sbφrka dotaz∙ str.8

Sbφrka dotaz∙ - ·vodnφ strana

SQL dotazy