|
![]() | Strana 8 (IN, BETWEEN, subdotaz) | ![]() | Sbφrka p°φklad∙ SQL dotaz∙ | Strana 10 (subdotaz x JOIN) | ![]() |
P°φklad 17
Zadßnφ: Vyberte faktury firem z Prahy
Popis °eÜenφ: Zvolφme °eÜenφ se subdotazem. Subdotaz vybere firmy z Prahy:
SELECT cislo
FROM Firmy
WHERE mesto LIKE "Praha%"
Dotaz na tabulku Faktury pou₧ije subdotaz k vybrßnφ t∞ch faktur, jejich₧ Φφslo firmy se nachßzφ v subdotazu. Doslovn² p°epis pak vypadß takto:
SQL:
SELECT cislo, firma
FROM Faktury
WHERE firma IN (SELECT cislo
FROM Firmy
WHERE mesto LIKE "Praha%")
Poznßmky:
a) Predikßt IN je zde (na rozdφl od p°φkladu 15) pou₧it ve v²znamu zjiÜt∞nφ v²skytu v odpov∞di na subdotaz. Subdotaz musφ obsahovat pouze jeden sloupec.
b) StejnΘho efektu by se dosßhlo zßpisem firma=ANY (subdotaz)
mφsto firma IN (subdotaz)
.
c) Predikßt LIKE slou₧φ k porovnßvßnφ hodnoty sloupce MESTO se vzorem zadan²m v²razem "Praha%", co₧ je SQL zßpis ve 602SQL pou₧φvanΘho operßtoru .= (°et∞zec zaΦφnß ...). Predikßt LIKE je mnohem obecn∞jÜφ
d) Ji₧ z d°φv∞jÜφch p°φklad∙ byste m∞li um∞t vytvo°it tento dotaz i bez subdotazu:
SELECT Faktury.cislo, Faktury.firma
FROM Faktury, Firmy
WHERE Firmy.cislo=Faktury.firma
AND (Firmy.mesto.="Praha")
![]() | Strana 8 (IN, BETWEEN, subdotaz) | ![]() | Sbφrka p°φklad∙ SQL dotaz∙ | Strana 10 (subdotaz x JOIN) | ![]() |