2020. március 4., szerda

INNER JOIN művelet alkalmazása SQL szüréskor 12B



Egyesíti két tábla rekordjait, ha azok közös mezőjében azonos érték szerepel.

Szintaxis

FROM tábla1 INNER JOIN tábla2 ON tábla1.mező1 hasonlító művelet tábla2.mező2
Az INNER JOIN művelet a következő részekből áll:

Elem Leírás
tábla1, tábla2 A két tábla neve, melyek rekordjaiból az egyesített rekordok készülnek.
mező1, mező2 Az egyesítendő mezők neve. Ha a mezők nem szám típusúak, ugyanolyan adattípushoz kell tartozniuk, ugyanolyan jellegű adatokat kell tartalmazniuk, de a nevük lehet különböző.
hasonlító művelet Bármely összehasonlító művelet: "=", "<", ">", "<=", ">=" vagy "<>".
Megjegyzés

Az INNER JOIN művelet bármely FROM záradékban használható. Ez az illesztés leggyakoribb fajtája. Egyesíti két tábla rekordjait, ha azok közös mezőjében azonos érték szerepel.

Az INNER JOIN művelet segítségével kiválogathatjuk a Részlegek és az Alkalmazottak táblából minden részleg összes alkalmazottját. Ezzel szemben, ha az összes részleget szeretnénk kiválogatni (akkor is, ha némelyikhez nincs alkalmazott rendelve), vagy az összes alkalmazottat (akkor is, ha egyesek nem tartoznak egyik részleghez sem), a LEFT JOIN vagy RIGHT JOIN művelettel létesíthetünk laza illesztést.

Ha Feljegyzést vagy OLE objektumot tartalmazó mezőket próbálunk illeszteni, hiba lép fel.

Hasonló típusú szám mezők illeszthetők. Például illeszthető Számláló és Hosszú egész mező, mert ezek hasonló típusúak. Ugyanakkor Egyszeres és Dupla mező nem illeszthető.

A következő példa azt mutatja, hogyan illeszthető a Kategóriák és a Termékek tábla a Kategóriakód mező segítségével:

SELECT Kategórianév, Terméknév

FROM Kategóriák INNER JOIN Termékek

ON Kategóriák.Kategóriakód = Termékek.Kategóriakód;

A példában a Kategóriakód az illesztett mező, de a lekérdezés eredményében nem jelenik meg, hiszen nem szerepel a SELECT utasításrészben. Ha az illesztett mezőt is meg szeretnénk jeleníteni, be kell azt (a fenti példában a Kategóriák.Kategóriakód mezőt) írni a SELECT után.

Több ON záradékot is írhatunk egy JOIN utasításba a következő szintaxis szerint:



SELECT mezők

FROM tábla1 INNER JOIN tábla2

ON tábla1.mező1 hasonlító művelet tábla2.mező1 AND

ON tábla1.mező2 hasonlító művelet tábla2.mező2) OR

ON tábla1.mező3 hasonlító művelet tábla2.mező3)];



JOIN utasítások egymásba is ágyazhatók a következő szintaxis szerint:



SELECT mezők

FROM tábla1 INNER JOIN (tábla2 INNER JOIN [( ]tábla3

[INNER JOIN [( ]táblaX [INNER JOIN ...)]

ON tábla3.mező3 hasonlító művelet táblaX.mezőX)]

ON tábla2.mező2 hasonlító művelet tábla3.mező3)

ON tábla1.mező1 hasonlító művelet tábla2.mező2;

LEFT JOIN vagy RIGHT JOIN szerepelhet INNER JOIN utasításon belül, INNER JOIN azonban nem írható LEFT JOIN vagy RIGHT JOIN utasításba.

http://sql.misi.eu/inner/

http://www.sze.hu/~szorenyi/sz03/htm/doc/_gzacc.htm

Nincsenek megjegyzések:

Megjegyzés küldése