Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések 3. gyakorlat Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
SELECT ... oszlopok kiválasztása (projekció) (6) FROM ... táblanév(-ek) (Descartes szorzat) (1) [WHERE ... ] sorok kiválasztása (szelekció) (2) [CONNECT BY ... [START WITH ...]]hierarchia kezelés (3) [GROUP BY ... ] csoportosítás (4) [HAVING ... ] csoportok közötti válogatás (5) [{UNION | UNION ALL | INTERSECT | MINUS} alselect] (7) [ORDER BY ... ] eredménysorok rendezése (8) [FOR UPDATE OF …] kiválasztott sorok zárolása az (9)
Táblák összekapcsolása -- JOIN SELECT Szelekciólista FROM tábla1 |{INNER|LEFT|RIGHT|FULL} JOIN tábla2 {ON | USING} WHERE GROUP BY HAVING ORDER BY
Hierarchia lekérdezése ORACLE-ben Az SQL nyelv ORACLE-ben használt bővítése lehetővé teszi, hogy egy táblában kódolt hierarchikus adatokat a hierarchiának megfelelő sorrendben lekérdezzük. Pl.: Alkalmazottak fa-szerkezetű lekérdezése a gyökér felől (főnök => beosztott irány) indulva
CONNECT BY - specifikálja a kapcsolatot a szülő és a gyerek sorok között, amely alapján a tábla sorait hierarchiába lehet kapcsolni. PRIOR: a PRIOR operátoros kifejezés reprezentálja a szülőt, először ez lesz kiértékelve a kiválasztott sorra, majd a másik oldali kifejezés a tábla összes sorára. Azon sorok lesznek a gyerek sorok, amelyekre a feltétel igaz. (A fabejárási irányt határozza meg ezáltal.) START WITH : melyik csomóponton induljon. LEVEL: pszeudó oszlop, amely lehetővé teszi annak a szintnek a lekérdezését, amelyen az egyes adatok a hierarchiában szerepelnek (pszeudó oszlop: nincs a táblában tárolva, de úgy viselkedik mint egy normál oszlop)
Allekérdezés SQL utasításon belül SELECT használata FROM (inline nézet) WHERE (logikai operátor, halmaz) Külső utasítás számára ad vissza eredménysorokat Kiértékelés belülről halad kifelé (több szint)
Allekérdezés -- FROM Mindig használjunk másodlagos táblanevet Kívül minősített névvel lehet a belső eredményre hivatkozni 3.3 feladat 2. megoldás
Allekérdezés -- WHERE IN, ANY, ALL, EXISTS logikai operátorok Halmazok Halmazműveletek: UNION, INTERSECT, MINUS Nem tartalmazhat másodlagos táblanevet Kívülről nem lehet rá hivatkozni 3.3 feladat 3. megoldás
NULL értékű sorral való kiegészítés 3.10 feladat (+) használata Azon tábla kapcsolóoszlopát jelöljük meg (+) jellel, melyben NULL értékű sorral való kiegészítést kérünk.