I et relasjonsdatabasestyringssystem kan du sammenligne dataposter i forskjellige tabeller med hverandre. Dette gjør det mulig å opprette koblinger og hente ut samsvarende verdier fra to forskjellige tabeller. Denne oppgaven utføres med JOIN i MariaDB. Setningen brukes i kombinasjon med SELECT og kan deles inn i forskjellige kategorier. Vi vil presentere INNER JOIN, LEFT OUTER JOIN og RIGHT OUTER JOIN mer detaljert nedenfor.

Hva er syntaksen for JOIN?

For å hjelpe deg med å forstå de ulike JOIN i MariaDB, begynner vi med å presentere den grunnleggende syntaksen til setningen. Her er syntaksen for INNER JOIN:

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

Ved å bruke SELECT angir du kolonnen (eller kolonnene) du vil inkludere. Erstatt plassholderen «table_1» med den første tabellen og «table_2» med den andre tabellen du vil koble sammen med den første. Operasjonen INNER JOIN sammenligner hver rad i den første tabellen med hver rad i den andre tabellen. Bare samsvarende poster (de som finnes i begge tabellene) vises i resultattabellen. Ikke-samme poster blir ekskludert fra utdataene.

Hvordan bruke INNER JOIN i MariaDB

For å demonstrere hvordan INNER JOIN fungerer i MariaDB, la oss se på et enkelt eksempel. Vi bruker en database som har to tabeller. Den første tabellen heter «Customer List», og den andre heter «Orders». Vi kan opprette tabellen «CustomerList» ved hjelp av MariaDB CREATE TABLE. Denne tabellen inneholder kolonnene «Customer ID», «LastName», «FirstName», «City» og «CreationDate». Slik ser koden ut:

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

La oss nå fylle denne tabellen med noen verdier. For å gjøre dette bruker vi 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

Deretter oppretter vi tabellen «Orders». Denne inneholder kolonnene «OrderID», «ProductID», «CustomerName» og «OrderDate». Koden ser slik ut:

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

Vi skal også fylle denne tabellen med eksempelverdier:

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

Nå skal vi bruke INNER JOIN for MariaDB til å filtrere etter kunder som vises i kundelisten og har lagt inn en ordre som er oppført i tabellen Orders. Den tilhørende koden ser slik ut:

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

I dette eksemplet fokuserer vi på etternavnet i kundelisten og kundenavnet i ordrene. Når disse verdiene samsvarer, inkluderes de i resultatene. Siden kundene Meyer og Rodman finnes i begge tabellene, vil resultatet se slik ut:

Kunde-ID Kundenavn Ordre-ID Produkt-ID
3 Meyer 102 332
2 Rodman 104 191

LEFT OUTER JOIN

LEFT OUTER JOIN i MariaDB fungerer etter et lignende prinsipp og bruker også en nesten identisk syntaks. I motsetning til INNER JOIN blir imidlertid alle dataposter fra den første eller venstre tabellen (i vårt eksempel «CustomerList») vist, og bare de matchende datapostene fra den andre eller høyre tabellen («orders»). Hvis det ikke finnes noen ekvivalent i den andre tabellen, angis verdien som NULL. Ved å bruke eksemplet ovenfor ser koden slik ut:

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

Dette gir oss følgende resultat:

Kundenavn Produkt-ID
Smith NULL
Rodman 191
Meyer 332
Garcia NULL
Davis NULL

RIGHT OUTER JOIN

I MariaDB fungerer RIGHT OUTER JOIN på motsatt måte. Her kombineres data fra den andre eller høyre tabellen med matchende verdier fra den første eller venstre tabellen. Hvis det ikke er noen match, vil den resulterende verdien være NULL. Nedenfor er koden:

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

Slik ser resultatet ut:

Kundenavn Produkt-ID
NULL 247
Meyer 332
NULL 247
Rodman 191
NULL 499
Go to Main Menu