602SQL-┌plnß dokumentace Index   Tisk  

Sbφrka dotaz∙ û str. 12

P°φklad 20

Zadßnφ: M∞jme tabulky FAKTURY a FAKT_2 a v nich data z let 1998 a 1997. VypiÜte faktury odb∞ratel∙ z dvou m∞sφc∙ na p°elomu roku 1997.

Popis °eÜenφ: ┌loha vy₧aduje spojenφ dat ze dvou tabulek, nikoli vÜak na zßklad∞ relaΦnφho vztahu, n²br₧ pouh²m p°idßnφm zßznam∙ za sebe. Sjednocenφ vφce tabulek sice 602SQL pomocφ SQL umφ vytvo°it, nicmΘn∞ tato operace nenφ ani obvyklß ani Φastß. Nenφ proto ani implementovßna do interaktivnφho nßvrhß°e. Pokud chcete tabulky sjednotit, musφte zapsat p°φkaz SQL p°φmo v jeho textovΘ podob∞. Ob∞ Φßsti dotazu spojte klφΦov²m slovem UNION a v²sledek m∙₧ete set°φdit sestupn∞ podle data.

SQL:

    SELECT *
    FROM Fakt_2
    WHERE dat1 > 30.11.1997
       UNION
    SELECT *
    FROM Faktury
    WHERE dat1 < 1.2.1998
    ORDER BY dat1 DESC

Poznßmky:

a) Ob∞ Φßsti sjednocenφ musφ mφt v Φßsti SELECT polo₧ky stejn²ch typ∙.

b) Set°φd∞nφ se t²kß obou Φßstφ dotazu, t°φdit jednotlivΘ Φßsti p°ed sjednocenφm nelze.

c) Pou₧itφm UNION (bez ALL) °φkßte, ₧e ka₧d² zßznam bude ve v²sledku nejv²Üe jednou (duplicity budou vylouΦeny).

d) Nenφ-li t°eba zajistit, aby ve v²sledku byl ka₧d² zßznam jen jednou (jako v tomto p°φpad∞), pou₧ijte klauzulu UNION ALL, kterß v²razn∞ zrychlφ vyhodnocenφ. Majφ-li vÜak ob∞ Φßsti UNIONu neprßzdn² pr∙nik, je t°eba pou₧itφ ALL zva₧ovat - nap°. pro v²pis je vhodnß unikßtnost zßznam∙, ale je-li tento dotaz nap°. zdrojem pro dalÜφ databßzovou operaci, m∙₧e b²t rychlejÜφ sestavit dotaz s duplicitami a pro n∞ provΘst operaci dvakrßt ne₧ vyhodnocovat unikßtnost.