SQL lekérdezések; több asztalon át
Táblák összekapcsolása - csatlakozás
A relációs adatbázisok általában nagyszámú táblából állnak. SQL-lekérdezéshez gyakran olyan adatokat szeretne, amelyek különböző táblákból származnak. Ehhez a táblákat össze kell kapcsolni. Az ilyen kapcsolatokat ún Csatlakozik.

A táblák összekapcsolódnak a FROM záradékban szereplő táblák megadásával. A különböző táblák attribútumai gyakran azonos nevekkel rendelkeznek. Ha ilyen attribútumot használnak az SQL lekérdezésben, akkor meg kell adni a tábla nevét is. Az egyik azt írja: tábla neve.attribútum neve.
| A Name attribútum neve nem egyértelmű. Leírja egyrészt a tanár nevét, másrészt az osztályt. Példánkban az osztály nevét a Class.Name és a tanár nevét a Teacher.Name címmel kell megcímezni. |
| megjegyzés | Ha az oszlop neve egyedi, akkor nem kell a táblázat nevét elé tenni. |
A következő lekérdezés bemutatja az elvet. A WHERE záradék jelentését az alábbiakban részletezzük.
A táblák nevei átnevezhetők a FROM záradékon belül. Ehhez az SQL adja meg a kulcsszót MINT elérhető, de nem feltétlenül használják. Például a fenti kérelem következő megfogalmazása lehetséges:
| SELECT l.name, k.name TÓL TŐL Tanár MINT l, osztály MINT k HOL l.PersNr = k.osztálykezelés; |
| SELECT l.name, k.name TÓL TŐL Tanár l, k osztály HOL l.PersNr = k.osztálykezelés; |
Mivel a PersNr és az osztálykezelés egyedi attribútumnevek, a WHERE záradék a következő lehet:
| HOL PersNr = osztályvezető |
A táblák nevei átnevezhetők a FROM záradékban. Ehhez az SQL adja meg a kulcsszót MINT elérhető, de nem feltétlenül használják. Például a fenti kérelem következő megfogalmazása lehetséges:
| SELECT p. helyiség neve TÓL TŐL Egyetemi tanár MINT p, ügyeleti helyiség MINT d HOL p.PersNr = d.PersNr; |
| SELECT o. Név, azaz sz TÓL TŐL professzor p, iroda d HOL p.PersNr = d.PersNr; |
Mivel a név és a RaumNr egyedi attribútumnevek, a SELECT záradék lehet:
| SELECT név, teremszám |
A WHERE záradék jelentése
A WHERE záradék elhagyása a fenti példában a következő eredményhez vezet:
Ennek az eredménynek a létrehozása a következőképpen képzelhető el. Csatlakozáskor az egyik táblázat minden adatrekordja összekapcsolódik a másik táblázat minden adatrekordjával. Az eredmény egy virtuális táblában van "tárolva", amely az egyik és a másik táblázat oszlopát is tartalmazza.
A WHERE záradék segítségével megadhatók az egyenlőség feltételei, amelyek kizárják az értelmetlen vagy értelmetlen kombinációkat.
Öncsatlakozás
Néha egy tábla önmagához kapcsolódik. Ezt a bizonyos csatlakozást hívják Öncsatlakozás.
| SELECT Név, tárgy TÓL TŐL Tanár, tanári képesítéssel rendelkezik HOL PersNr = tanár; |
| Gyakorlási adatbázis |
| SELECT Vezetéknév TÓL TŐL Tanár, szakfelügyelete van HOL PersNr = tanár ÉS Tárgy = 'német'; |
| Gyakorlási adatbázis |
| SELECT l.name TÓL TŐL Tanár l, tanuló s, is_Fachlehrkraft_von i HOL osztályban = s.gehoert_zu ÉS i.tanár = 1. személy sz ÉS s.Név = 'Falbala'; |
| Gyakorlási adatbázis |
| SELECT tanár TÓL TŐL ist_fachlehrkraft_von a, ist_fachlehrkraft_von b HOL a.tanár = b.tanár ÉS a.osztály = b.osztály ÉS NEM (a.Fach = b.Fach); |
| Gyakorlási adatbázis |
Ez egy öncsatlakozás, mert az is_teacher_of tábla össze van kapcsolva önmagával.
Elrejt