P°φklad 15
Zadßnφ: Vyberte firmy, kterΘ byly do databßze zapsßny v m∞sφcφch leden a₧ b°ezen vΦetn∞.
SQL:
SELECT Firmy.cislo,Firmy.nazev,Firmy.pracovnik,
Firmy.dat_zapisu
FROM Firmy
WHERE (Month(dat_zapisu) IN (1,2,3))
Poznßmky:
a) stejnΘho cφle by Ülo dosßhnout i pomocφ jin²ch zßpis∙ podmφnky, nap°.
WHERE (Month(dat_zapisu) BETWEEN 1 AND 3)
nebo
WHERE (Month(dat_zapisu) >=1 AND Month(dat_zapisu) <=3)
b) operßtor IN mß i druhΘ pou₧itφ û hodnota se pomocφ n∞ho porovnßvß s v²sledkem subdotazu.
P°φklad 16
Zadßnφ: Vyberte faktury jednoho typu za vφce ne₧ je pr∙m∞rnß hodnota faktury tohoto typu.
Popis °eÜenφ: Rozd∞lφme si ·lohu na dva kroky. Nejprve spoΦteme pr∙m∞rnou hodnotu faktury:
SELECT AVG(castka)
FROM Faktury
WHERE druh=2
Tento dotaz by bylo v²hodnΘ umφstit jako souΦßst podmφnky v sekci WHERE. WinBase602 takovΘto pou₧itφ dotazu (neboli subdotazu) v dotazu umo₧≥uje.
SQL:
SELECT *
FROM Faktury
WHERE (Faktury.druh=2 AND
Faktury.castka > (SELECT AVG(castka)
FROM Faktury
WHERE druh=2))
Poznßmky:
a) Subdotaz se v₧dy ohraniΦen kulat²mi zßvorkami.
b) Dotaz je editovateln², proto₧e agregaΦnφ funkce je pouze v subdotazu.
c) V podobnΘm dotazu nenφ mo₧nΘ pou₧φt klauzuli HAVING (jak to umo₧≥oval WinBase602 do verze 5).
PokraΦovßnφ