Informatika gyűjtemény

NézetNyomtat

Táblák összekapcsolása

Jól megtervezett (normalizált) adatbázisokban az összetartozó információk sokszor több táblába vannak szétosztva. Ezzel elkerülhető a redundancia, továbbá az adatok módosításnál vagy törlésénél így egyszerűbb elkerülni bizonyos hibákat (inkozisztens adatok, információvesztés).
Amikor lekérdezünk az adatbázisból, össze kell szednünk az összetartozó adat-töredékeket. Erre szolgál a táblák összekapcsolása. Alapvetően kétféle összekapcsolást használunk:
  • belső összekapcsolás (INNER JOIN)
  • külső összekapcsolás (OUTER JOIN)
Az összekapcsolás lényege, hogy több táblából egyet csinál oly módon, hogy az eredmény tábla sorai az eredeti táblák megfelelő sorainak egymás mellé írásával keletkeznek. Hogy mit jelent a "megfelelő", az az összekapcsolás feltételében adható meg. Ez leggyakrabban abból áll, hogy az egyik tábla rekordjaiban található valamelyik mező meg kell egyezzen a másik tábla rekordjának egy mezőjével. Itt tipikusan a feltételben szereplő egyik mező kulcs szokott lenni, de ez nem kötelező.

Példa

Tekintsük a következő táblákat:
Diák(név,of)
névof
Aladár1
Bori2
Csilla2
Tanár(sor,név)
sornév
1Kiss Lenke
2Gálos László
3Konta Gyula
Ha a Diák tábla "of" mezőjét rendeljük a Tanát tábla "sor" mezőjéhez, akkor a következő összekapcsolt táblát kapjuk.
Diák.névofsorTanár.név
Aladár11Kiss Lenke
Bori22Gálos László
Csilla22Gálos László

Belső összekapcsolás

Összekapcsolás a "WHERE" záradékban

SELECT *
FROM T1, T2
WHERE T1.kulcs = T2.kulcs

Összekapcsolás a "FROM" záradékban

SELECT *
FROM T1 INNER JOIN T2 ON T1.kulcs = T2.kulcs

Több tábla összekapcsolása

SELECT *
FROM T1, T2, T3
WHERE T1.ka = T2.ka AND T2.kb = T3.kb
SELECT *
FROM (T1 INNER JOIN T2 ON T1.ka=T2.ka) INNER JOIN  T3 ON T2.kb=T3.kb

Külső összekapcsolás

Asszimetrikus, lehet jobb (RIGHT) vagy bal (LEFT).
SELECT *
FROM T1 LEFT OUTER JOIN T2 ON T1.kulcs=T2.kulcs
Ha a T1 tábla adott rekordjához nincs "pár" T2-ben, akkor is bekerül az eredmény táblába, és T2 mezői "NULL" értéket kapnak.