Egy relációs adatbázis-kezelő rendszerben össze lehet hasonlítani a különböző táblákban található adatrekordokat. Ez lehetővé teszi kapcsolatok létrehozását és az egyező értékek kivonását két különböző táblából. Ez a feladat a MariaDB-ben JOIN paranccsal hajtható végre. A parancs SELECT paranccsal együtt használható, és különböző kategóriákba sorolható. Az alábbiakban részletesebben bemutatjuk INNER JOIN, LEFT OUTER JOIN és RIGHT OUTER JOIN.

Mi a JOIN szintaxisa?

A MariaDB JOIN különböző utasításának megértéséhez először bemutatjuk az utasítás alapvető szintaxisát. Íme a INNER JOIN szintaxisa:

SELECT column
FROM table_1
INNER JOIN table_2
ON table_1.column = table_2.column;
sql

SELECT segítségével megadhatja a beillesztendő oszlopot (vagy oszlopokat). Cserélje ki a „table_1” helyőrzőt az első táblára, a „table_2” helyőrzőt pedig a második táblára, amelyet az elsővel szeretne összekapcsolni. A INNER JOIN művelet összehasonlítja az első táblában található összes sort a második táblában található összes sorral. Csak az egyező rekordok (azok, amelyek mindkét táblában megtalálhatók) jelennek meg az eredménytáblában. Az egyező rekordok nem kerülnek be a kimenetbe.

A INNER JOIN használata a MariaDB-ben

Hogy bemutassuk, hogyan működik INNER JOIN a MariaDB-ben, nézzünk meg egy egyszerű példát. Egy két táblát tartalmazó adatbázist fogunk használni. Az első táblát „Customer List” (Ügyféllista) névvel, a másodikat pedig „Orders” (Megrendelések) névvel fogjuk elnevezni. A „CustomerList” táblát a MariaDB CREATE TABLE paranccsal hozhatjuk létre. Ez a táblázat a „Customer ID” (Ügyfélazonosító), „LastName” (Vezetéknév), „FirstName” (Keresztnév), „City” (Város) és „CreationDate” (Létrehozás dátuma) oszlopokat tartalmazza. A kód így néz ki:

CREATE TABLE CustomerList (
	CustomerID INT PRIMARY KEY,
	LastName VARCHAR(50),
	FirstName VARCHAR(50),
	City VARCHAR(50),
	CreationDate DATE
);
sql

Most töltsük meg ezt a táblázatot néhány értékkel. Ehhez INSERT INTO használjuk:

INSERT INTO CustomerList VALUES
(1, 'Smith', 'Martina', 'London', '2022-07-19'),
(2, 'Rodman', 'Daniel', 'Aberdeen', '2023-03-03'),
(3, 'Meyer', 'Peter', 'Cardiff', '2023-07-09'),
(4, 'Garcia', 'Laura', 'Preston', '2023-12-10'),
(5, 'Davis', 'Lisa', 'Bournemouth', '2024-01-17');
sql

Ezután létrehozzuk az „Orders” táblázatot. Ez tartalmazza az „OrderID”, „ProductID”, „CustomerName” és „OrderDate” oszlopokat. A kód így néz ki:

CREATE TABLE Orders (
	OrderID INT AUTO_INCREMENT PRIMARY KEY,
	ProductID INT,
	CustomerName VARCHAR(50),
	OrderDate DATE
);
sql

Ezt a táblázatot is kitöltjük mintaértékekkel:

INSERT INTO Orders VALUES
(101, 247, 'Jackson', '2024-02-20'),
(102, 332, 'Meyer', '2024-03-03'),
(103, 247, 'Anderson', '2024-03-09'),
(104, 191, 'Rodman', '2024-03-17'),
(105, 499, 'Martinez', '2024-03-17');
sql

Most a MariaDB INNER JOIN használjuk arra, hogy kiszűrjük azokat az ügyfeleket, akik szerepelnek az ügyféllistán, és akik megrendelést adtak le a Megrendelések táblában. A megfelelő kód így néz ki:

SELECT CustomerList.CustomerID, CustomerList.LastName, Orders.OrderID, Orders.ProductID
FROM CustomerList
INNER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;
sql

Ebben a példában a vevőlista vezetéknevére és a megrendelésekben szereplő vevő nevére koncentrálunk. Ha ezek az értékek megegyeznek, akkor bekerülnek az eredményekbe. Mivel Meyer és Rodman vevők mindkét táblázatban szerepelnek, a kimenet így fog kinézni:

Ügyfél azonosító Ügyfél neve Rendelés azonosító Termék azonosító
3 Meyer 102 332
2 Rodman 104 191

LEFT OUTER JOIN

A MariaDB-benLEFT OUTER JOIN hasonló elven működik, és szinte azonos szintaxist használ. INNER JOIN eltérően azonban az első vagy bal oldali táblázat (példánkban a „CustomerList”) összes adatrekordja kinyomtatásra kerül, és csak a második vagy jobb oldali táblázat („orders”) megfelelő adatrekordjai. Ha a második táblázatban nincs megfelelő, az érték NULL-ként kerül megadásra. A fenti példát használva a kód így néz ki:

SELECT CustomerList.LastName, Orders.ProductID
FROM CustomerList
LEFT OUTER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;
sql

Ez a következő eredményt adja:

Ügyfél neve Termékazonosító
Smith NULL
Rodman 191
Meyer 332
Garcia NULL
Davis NULL

RIGHT OUTER JOIN

A MariaDB-ben RIGHT OUTER JOIN ellentétesen működik. Itt a második vagy jobb oldali táblázat adatai az első vagy bal oldali táblázat megfelelő értékeivel kerülnek összevonásra. Ha nincs egyezés, az eredmény értéke NULL lesz. Az alábbiakban látható a kód:

SELECT CustomerList.LastName, Orders.ProductID
FROM CustomerList
RIGHT OUTER JOIN Orders
ON CustomerList.LastName = Orders.CustomerName;
sql

Így néz ki a kimenet:

Ügyfél neve Termékazonosító
NULL 247
Meyer 332
NULL 247
Rodman 191
NULL 499
Ugrás a főmenübe