Relāciju datu bāzes pār­val­dī­bas sistēmā var sa­lī­dzi­nāt datu ierakstus dažādās tabulās. Tas ļauj izveidot saiknes un iegūt at­bil­sto­šas vērtības no divām dažādām tabulām. Šo uzdevumu MariaDB veic ar JOIN. Šo izteikumu lieto kopā ar SELECT, un to var iedalīt dažādās ka­te­go­ri­jās. Turpmāk sīkāk iz­klās­tī­sim INNER JOIN, LEFT OUTER JOIN un RIGHT OUTER JOIN.

Kāda ir sintakse skaitlim JOIN?

Lai palīdzētu jums izprast dažādās JOIN ins­truk­ci­jas MariaDB, sāksim ar ins­truk­ci­jas pamata sintakses iz­klās­tī­ša­nu. Šeit ir sintakse INNER JOIN:

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

Iz­man­to­jot SELECT, norādiet kolonnu (vai kolonnu), kuru vēlaties iekļaut. Aiz­stā­jiet vietas turētāju „table_1” ar pirmo tabulu un „table_2” ar otro tabulu, kuru vēlaties apvienot ar pirmo. INNER JOIN darbība salīdzina katru rindu pirmajā tabulā ar katru rindu otrajā tabulā. Rezultātu tabulā tiks parādīti tikai at­bil­sto­šie ieraksti (tie, kas ir abās tabulās). Ne­at­bil­sto­šie ieraksti tiek izslēgti no izvades.

Kā lietot INNER JOIN MariaDB

Lai parādītu, kā INNER JOIN darbojas MariaDB, aplūkosim vienkāršu piemēru. Iz­man­to­sim datu bāzi, kurā ir divas tabulas. Pirmā tabula ir nosaukta „Klientu saraksts”, bet otrā – „Pa­sū­tī­ju­mi”. Tabulu „Klientu saraksts” var izveidot, iz­man­to­jot MariaDB CREATE TABLE. Šajā tabulā ir kolonnas „Klienta ID”, „Uzvārds”, „Vārds”, „Pilsēta” un „Izveides datums”. Šāds ir koda izskats:

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

Tagad pie­pil­dī­sim šo tabulu ar dažām vērtībām. Lai to izdarītu, iz­man­to­sim 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

Tad iz­vei­do­jam tabulu „Orders”. Tajā ir kolonnas „OrderID”, „ProductID”, „Cus­to­mer­Na­me” un „OrderDate”. Kods izskatās šādi:

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

Mēs arī aiz­pil­dī­sim šo tabulu ar paraugu vērtībām:

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

Tagad iz­man­to­sim INNER JOIN MariaDB, lai filtrētu klientus, kuri parādās klientu sarakstā un ir veikuši pa­sū­tī­ju­mu, kas uz­skai­tīts tabulas Orders. At­bil­sto­šais kods izskatās šādi:

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

Šajā piemērā mēs kon­cen­trē­ja­mies uz uzvārdu klientu sarakstā un klienta vārdu pa­sū­tī­ju­mos. Ja šīs vērtības saskan, tās tiek iekļautas re­zul­tā­tos. Tā kā klienti Meyer un Rodman ir abās tabulās, izvade iz­ska­tī­sies šādi:

Klienta ID Klienta vārds Pa­sū­tī­ju­ma ID Produkta ID
3 Meyer 102 332
2 Rodman 104 191

LEFT OUTER JOIN

LEFT OUTER JOIN MariaDB darbojas pēc līdzīga principa un izmanto gandrīz identisku sintaksi. Tomēr, atšķirībā no INNER JOIN, tiek izvadīti visi datu ieraksti no pirmās vai kreisās tabulas (mūsu piemērā „Cus­to­merList”) un tikai at­bil­sto­šie datu ieraksti no otrās vai labās tabulas („orders”). Ja otrajā tabulā nav ek­vi­va­len­ta, vērtība tiek norādīta kā NULL. Iz­man­to­jot iepriekš minēto piemēru, kods izskatās šādi:

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

Tas dod mums šādu rezultātu:

Klienta vārds Produkta ID
Smith NULL
Rodman 191
Meyer 332
Garcia NULL
Davis NULL

RIGHT OUTER JOIN

MariaDB datu bāzē RIGHT OUTER JOIN darbojas pretēji. Šeit dati no otrās vai labās tabulas tiek apvienoti ar at­bil­sto­ša­jām vērtībām no pirmās vai kreisās tabulas. Ja at­bil­stī­bas nav, rezultātā iegūtā vērtība būs NULL. Zemāk ir redzams kods:

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

Šādi izskatās rezultāts:

Klienta vārds Produkta ID
NULL 247
Meyer 332
NULL 247
Rodman 191
NULL 499
Go to Main Menu