Într-un sistem de gestionare a bazelor de date relaționale, puteți compara între ele înregistrările de date din diferite tabele. Acest lucru face posibilă crearea de conexiuni și extragerea valorilor corespunzătoare din două tabele diferite. Această sarcină este realizată cu JOIN în MariaDB. Instrucțiunea este utilizată în combinație cu SELECT și poate fi împărțită în diferite categorii. Vom prezenta INNER JOIN, LEFT OUTER JOIN și RIGHT OUTER JOIN mai detaliat mai jos.

Care este sintaxa pentru JOIN?

Pentru a vă ajuta să înțelegeți cele JOIN instrucțiuni din MariaDB, vom începe prin a prezenta sintaxa de bază a instrucțiunii. Iată sintaxa pentru INNER JOIN:

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

Folosind SELECT, specificați coloana (sau coloanele) pe care doriți să le includeți. Înlocuiți substituentul „table_1” cu primul tabel și „table_2” cu al doilea tabel pe care doriți să îl uniți cu primul. Operațiunea INNER JOIN compară fiecare rând din primul tabel cu fiecare rând din al doilea tabel. Numai înregistrările care se potrivesc (cele prezente în ambele tabele) vor fi afișate în tabelul cu rezultate. Înregistrările care nu se potrivesc sunt excluse din rezultat.

Cum se utilizează INNER JOIN în MariaDB

Pentru a demonstra cum funcționează INNER JOIN în MariaDB, să luăm un exemplu simplu. Vom folosi o bază de date care are două tabele. Primul tabel se numește „Lista clienților”, iar al doilea „Comenzi”. Putem crea tabelul „Lista clienților” folosind MariaDB CREATE TABLE. Acest tabel include coloanele „ID client”, „Nume”, „Prenume”, „Oraș” și „Data creării”. Iată cum arată codul:

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

Acum, să completăm acest tabel cu câteva valori. Pentru a face acest lucru, folosim INSERT INTO:

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

Apoi creăm tabelul „Comenzi”. Acesta conține coloanele „ID comandă”, „ID produs”, „Numele clientului” și „Data comenzii”. Codul arată astfel:

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

De asemenea, vom completa acest tabel cu valori de exemplu:

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

Acum, vom folosi INNER JOIN pentru MariaDB pentru a filtra clienții care apar în lista de clienți și care au plasat o comandă listată în tabelul Comenzi. Codul corespunzător arată astfel:

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

În acest exemplu, ne concentrăm pe numele de familie din lista de clienți și pe numele clientului din comenzi. Când aceste valori se potrivesc, ele sunt incluse în rezultate. Deoarece clienții Meyer și Rodman apar în ambele tabele, rezultatul ar arăta astfel:

ID client Numele clientului ID comandă ID produs
3 Meyer 102 332
2 Rodman 104 191

LEFT OUTER JOIN

LEFT OUTER JOIN în MariaDB funcționează după un principiu similar și utilizează, de asemenea, o sintaxă aproape identică. Spre deosebire de INNER JOIN, însă, toate înregistrările de date din prima tabelă sau din tabelul din stânga (în exemplul nostru „CustomerList”) sunt afișate și numai înregistrările de date corespunzătoare din a doua tabelă sau din tabelul din dreapta („orders”). Dacă nu există un echivalent în a doua tabelă, valoarea este specificată ca NULL. Folosind exemplul de mai sus, codul arată astfel:

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

Acest lucru ne dă următorul rezultat:

Numele clientului ID produs
Smith NULL
Rodman 191
Meyer 332
Garcia NULL
Davis NULL

RIGHT OUTER JOIN

În MariaDB, RIGHT OUTER JOIN funcționează în mod opus. Aici, datele din a doua tabelă sau din tabelul din dreapta sunt combinate cu valorile corespunzătoare din prima tabelă sau din tabelul din stânga. Dacă nu există nicio potrivire, valoarea rezultată va fi NULL. Mai jos este codul:

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

Iată cum arată rezultatul:

Numele clientului ID produs
NULL 247
Meyer 332
NULL 247
Rodman 191
NULL 499
Mergi la meniul principal