Csatlakozzon három táblához SQL-ben

Csatlakozzon Harom Tablahoz Sql Ben



A relációs adatbázisokban rendkívül gyakori az adatok több táblából való lekérése. A céleredménytől függően ez magában foglalja több tábla egyetlen egységbe történő egyesítését és a kapott adatok lekérését.

Ami az összeillesztést illeti, a legtöbben főként két asztalos korláttal dolgozunk. Mindazonáltal gyakori, hogy három táblát kell összekapcsolni, hogy értelmesebb adatelrendezést és betekintést nyerjünk. Vegyük például azt, hogy hol szeretné lekérni a filmek listáját, a hozzájuk tartozó kölcsönzési készletet és a tényleges kölcsönzési adatokat. Ezen egységek mindegyike, például a filmek, a készlet és a kölcsönzés részletei külön táblázatokban találhatók.

Ebben az oktatóanyagban végigvezetjük a különféle összekapcsolásokon és technikákon, amelyek segítségével három tábla összekapcsolható SQL-ben.







Követelmények:

Demonstrációs célokra a MySQL 80-as verzióját és a Sakila mintaadatbázist használjuk. A folytatáshoz letöltheti és beállíthatja a Sakila adatbázist MySQL szerverén. Nyugodtan használhat bármilyen más adatkészletet, amelyet alkalmazhatónak ítél.



Csatlakozások típusai SQL-ben

Mielőtt rátérnénk az összekapcsolások alkalmazására, kezdjük azzal, hogy megvitatjuk az SQL-adatbázisokban elérhető különböző típusú összekapcsolásokat.



BELSŐ ÖSSZEKAPCSOLÁS

Az első típusú csatlakozás a BELSŐ JOIN. Ez a típusú összekapcsolás csak azokat a sorokat adja vissza, amelyek mindkét táblában egyező értéket tartalmaznak. Ez egy nagyon gyakori összekapcsolási típus, és a legegyszerűbb két tábla összekapcsolásakor.





A szintaxis a következő:

Oszlopok KIVÁLASZTÁSA

táblázatból1

BELSŐ JOIN tábla2 TOVÁBB tábla1.oszlop_neve = tábla2.oszlop_neve;

BAL CSATLAKOZÁS

LEFT JOIN esetén a bal oldali tábla összes sorát, a jobb oldali táblából pedig az illesztett sorokat adja vissza. Ha a megfelelő táblából nincsenek egyező értékek, az összekapcsolás hozzáadja a NULL értékeket a helyükre.



A szintaxis a következő:

Oszlopok KIVÁLASZTÁSA

táblázatból1

LEFT JOIN tábla2 TOVÁBB tábla1.oszlop_neve = tábla2.oszlop_neve;

JOBB CSATLAKOZÁS

Ahogy sejtheti, a RIGHT JOIN a LEFT JOIN ellentéte. Az ilyen típusú összekapcsolások a jobb oldali táblázat összes sorát, a bal oldali táblából pedig csak a megfelelő sorokat adják vissza. Ha a bal oldali táblában nincsenek egyező sorok, az összekapcsolás hozzáadja a NULL értékeket.

A következő a RIGHT JOIN szintaxisa:

Oszlopok KIVÁLASZTÁSA

táblázatból1

RIGHT JOIN tábla2 TOVÁBB tábla1.oszlop_neve = tábla2.oszlop_neve;

TELJES KÜLSŐ CSATLAKOZÁS

A következő típusú csatlakozás, amellyel az SQL-adatbázisokban találkozni fog, a TELJES KÜLSŐ JOIN. Ez a fajta összekapcsolás az összes sort visszaadja, ha egyezés van a jobb vagy a bal táblákban. Ha nincs egyező érték a kettő közül, akkor NULL értéket ad vissza a tábla oszlopaihoz az egyezés nélkül.

Az alábbiakban bemutatjuk a TELJES KÜLSŐ JOIN szintaxisát:

Oszlopok KIVÁLASZTÁSA

táblázatból1

TELJES KÜLSŐ JOIN tábla2 TOVÁBB tábla1.oszlop_neve = tábla2.oszlop_neve;

Érdemes szem előtt tartani, hogy nem minden adatbázismotor támogatja a TELJES KÜLSŐ CSATLAKOZÁST. Ennek eléréséhez más típusú JOINS-ekkel vagy allekérdezésekkel kell dolgoznia.

Példák:

Nézzünk meg néhány példát arra vonatkozóan, hogyan használhatjuk az ilyen típusú összekapcsolásokat három tábla összekapcsolására SQL-ben.

1. példa: A BELSŐ JOIN használata

Egy BELSŐ CSATLAKOZÁSSAL kezdjük. Tegyük fel, hogy szeretnénk lekérni a filmek listáját, a kölcsönzési készletet és a megfelelő kölcsönzési adatokat.

Több BELSŐ CSATLAKOZÁST is használhatunk a kapcsolódó táblákon, amint az a következő példában látható:

KIVÁLASZTÁS

film cím,

inventory.inventory_id,

bérlés.bérleti_dátum

TÓL TŐL

film

BELSŐ JOIN leltár TOVÁBB

film.film_id = inventory.film_id

INNER JOIN bérlés TOVÁBB

inventory.inventory_id = rental.inventory_id;

A megadott példalekérdezésnél a film- és leltártáblázatok összekapcsolásával kezdjük a „film_id” oszlop alapján. Ezután vesszük a kapott halmazt, és az „inventory_id” oszlop alapján összekapcsoljuk a kölcsönzési táblázattal.

Ez biztosítja, hogy három táblát egy alapvető BELSŐ JOIN-nel kapcsoljunk össze. Az így kapott készlet a következő:

2. példa: Az INNER JOIN és a LEFT JOIN használata

Tegyük fel, hogy most szeretnénk a filmek listáját, a kölcsönzött készletek listáját (ha van ilyen) és a kapcsolódó kölcsönzési adatokat.

Arról is szeretnénk gondoskodni, hogy ha egy filmnek nincs is kölcsönözhető készlete, akkor is beleszámítsuk az eredménybe. Itt jön szóba a BELSŐ JOIN és a LEFT JOIN.

Tekintsük a következő példát:

KIVÁLASZTÁS

film cím,

inventory.inventory_id,

bérlés.bérleti_dátum

TÓL TŐL

film

BELSŐ JOIN leltár TOVÁBB

film.film_id = inventory.film_id

LEFT JOIN kölcsönzés TOVÁBB

inventory.inventory_id = rental.inventory_id;

Ebben a példában egy BELSŐ JOIN-t használunk a film- és leltártáblázat összekapcsolására, így biztosítva, hogy megkapjuk a címeket a rendelkezésre álló leltárral. Ezután a LEFT JOIN segítségével csatlakozunk a kölcsönzési táblázathoz, hogy lekérjük a kölcsönzési adatokat, ha rendelkezésre állnak, és a NULL értéket minden olyan címhez, amelynek nincs kölcsönzési előzménye.

Az így kapott készlet a következő:

Következtetés

Ebben az oktatóanyagban megismerkedtünk az SQL-ben található JOINS különféle típusaival, működésükkel és három tábla kombinálásával.