== Zkoušky ==
=== 17.1.2008 ([[Dotazovací_jazyky_I#17.1.2008|zadanie]]) ===
*1.)
<dl compact>
<dt>vybrat všetkých hercov, ktorí hrali vo filmoch režírovaných Formanom
<dd>čo je inak povedané: všetci herci pre ktorých neexistuje Formanov film, v ktorom hrali
-- vyber mená hercov..
SELECT H.Jméno
FROM Hraje_v HV
JOIN Herec H ON H.HerecId = HV.HerecId
-- ..pre ktorých neexistuje Formanov film v ktorom nehrali
WHERE NOT EXIST ( -- vyber Formanove filmy, v ktorých nehral herec H.HerecId
SELECT F2.FilmId
FROM Film F2
JOIN Hraje_v HV2 ON HV2.HerecId = F2.HerecId
WHERE F2.Režisér = 'Forman'
-- herec nie je v zozname hercov, ktorý hrali v tomto filme
AND H.HerecId NOT IN ( -- vyber všetkých herov ktorí hrali v tomto konkrétnom filme
SELECT HV3.HerecId
FROM Hraje_v HV3
WHERE F2.FilmId = HV3.FilmId
)
)
<dt>vybrat všetkých režisérov, kteří nehrali v žiadnom svojom filme
<dd>čo je inak povedané: vyber zoznam (reláciu) taký v ktorom bude pre každého režiséra zoznam hercov, ktorý hrali v niektorom jeho filme a ak je meno herca a meno režiséra rovnaké, tak tohto režiséra nechceme vo výslednom zozname
SELECT F.Režisér --, H.Jméno
FROM Film F
JOIN Hraje_v HV ON HV.FilmId = F.FilmId
JOIN Herec H ON H.HerecId = HV.HerecId
WHERE F.Režisér <> H.Jméno -- v zadaní bolo, že dom(Režisér) = dom(Jméno)
</dl>
7.) stačí použiť sedliacky rozum a uvodomiť si, že keď spájam relácie R a S, tak nezáleží na poradí
((R[B=C]S)[D=E]T)[A] -> ( T[E][E=D]( R[B=C]S[ACD] ) )[A]
-> ( T[E][E=D]( S[ACD][C=B]R ) )[A]
-> ( ( T[E][E=D]S[ACD] )[C=B]R )[A]