Összefoglaló: ebben az oktatóanyagban megtanulhatja, hogyan kell több táblából adatokat lekérdezni az SQL INNER JOIN utasítás használatával.
Az előző oktatóanyagban megtanulta, hogyan kell egyetlen táblából lekérdezni az adatokat a SELECT utasítással. Gyakran azonban több tábláról szeretne adatokat lekérdezni, hogy teljes elemkészlet legyen az elemzéshez. Adatok lekérdezéséhez több táblából csatlakozási utasításokat használ.
Az SQL többféle összekapcsolást biztosít, például belső illesztést, külső összekapcsolást (bal külső illesztés vagy bal oldali illesztés, jobb külső illesztés vagy jobb illesztés és teljes külső illesztés). ) és önállóan csatlakozzon. Ebben az oktatóanyagban megmutatjuk, hogyan kell használni a INNER JOIN
záradékot.
SQL INNER JOIN szintaxis
Az alábbiakban bemutatjuk a INNER JOIN
szintaxis két táblázat összekapcsolásához:
1
2
3
4
5
|
SELECT
oszlop1, oszlop2
FROM
table_1
INNER JOIN tábla_2 ON join_condition;
|
Vizsgáljuk meg a fenti szintaxist részletesebben:
- A
table_1
éstable_2
elemeket összekapcsolt tábláknak nevezzük. - Minden sorhoz a
table_1
mezőben a lekérdezés megtalálja atable_2
megfelelő sorát, amely megfelel a csatlakozási feltételnek. Ha a megfelelő sor megtalálható, a lekérdezés egy sort ad vissza, amely mindkét tábla adatait tartalmazza. Ellenkező esetben aztable_1
következő sorát vizsgálja, és ez a folyamat addig folytatódik, amíg atable_1
összes sorát megvizsgálják.
Több mint két tábla összekapcsolásához ugyanaz a logika érvényes.
SQL INNER JOIN példák
SQL INNER JOIN – adatok lekérdezése két táblából példa
Ebben a példában a products
és categories
táblákat fogjuk használni a minta adatbázisban. A következő kép az adatbázis diagramját szemlélteti.
A fenti ábrán:
- Egy kategóriának sok terméke lehet.
- Egy termék egy és csak egy kategóriába tartozik.
Ezért a táblázat és sorok a products
táblázatban. A két tábla közötti kapcsolat a categoryid
oszlop.
A következő adatokat kell megkérdeznünk mindkét táblából:
-
productID
,productName
aproducts
táblából. -
categoryName
acategories
táblából.
A következő lekérdezés mindkét táblázatból lekérdezi az adatokat:
1
2
3
4
5
6
|
SELECT
productID, productName, categoryName
FROM
termékek
BELSŐ CSATLAKOZÁS
kategóriák ON categories.categoryID = products.categoryID;
|
A csatlakozási feltételt a INNER JOIN
záradék határozza meg a ON
kulcsszó után kifejezésként:
1
|
categories.categoryID = products.categoryID
|
A products
tábla, a lekérdezés a categories
táblában megtalálja a megfelelő sort, amelynek ugyanaz a categoryid.
sora van, ha két sor van egyezésben a mindkét táblázat egy sort ad vissza, amely tartalmazza a SELECT záradékban megadott oszlopokat, azaz a termék azonosítóját, a termék nevét és a kategória nevét; ellenkező esetben ellenőrzi a products
táblázat következő sorát, hogy megtalálja a megfelelő sort a categories
táblázatban. Ez a folyamat addig folytatódik, amíg a terméktábla utolsó sorát meg nem vizsgálják.
SQL INNER JOIN – adatok lekérdezése három táblából
Ugyanazokat a technikákat használhatjuk három táblázat összekapcsolásához.A következő lekérdezés kiválasztja a következőt: productID
, productName
, categoryName
és supplier
a products
, categories
és suppliers
táblákból:
1
2
3
4
5
6
7
8
9
10
11
|
SELECT
productID,
terméknév,
categoryName,
companyName AS beszállító
FROM
termékek
INNER JOIN
kategóriák ON kategóriák. categoryID = products.categoryID
BELSŐ CSATLAKOZÁS
beszállítók ON beszállítókon.supplierID = products.supplierID
|
Implicit SQL BELSŐ CSATLAKOZÁS
A INNER JOIN
egy másik formája az implicit belső összekapcsolás, az alábbiak szerint:
1
2
3
4
5
6
7
|
SELECT
oszlop1, oszlop2
FROM
table_1,
table_2
WHERE
join_condition;
|
Ebben az űrlapban minden egyesített táblázatot megad a FROM
záradékot és a put feltétel feltételét az SELECT
utasítás WHERE záradékába. A fenti lekérdezési példát az implicit INNER JOIN
használatával átírhatjuk a következőképpen:
1
2
3
4
5
6
7
|
SELECT
productID, productName, categoryName
FROM
termékek,
kategóriák
WHERE
termékek.categoryID = categories.categoryID;
|