# Kā veikt vaicājumus un apvienot ierakstus, izmantojot MariaDB JOIN

Relāciju datu bāzes pārvaldības sistēmā var salīdzināt datu ierakstus dažādās tabulās. Tas ļauj izveidot saiknes un iegūt atbilstoš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 kategorijās. Turpmāk sīkāk izklāstī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` instrukcijas MariaDB, sāksim ar instrukcijas pamata sintakses izklāstīšanu. Šeit ir sintakse `INNER JOIN`:

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

Izmantojot `SELECT`, norādiet kolonnu (vai kolonnu), kuru vēlaties iekļaut. Aizstā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 atbilstošie ieraksti (tie, kas ir abās tabulās). Neatbilstoš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. Izmantosim datu bāzi, kurā ir divas tabulas. Pirmā tabula ir nosaukta „Klientu saraksts”, bet otrā – „Pasūtījumi”. Tabulu „Klientu saraksts” var izveidot, izmantojot [MariaDB CREATE TABLE](https://www.ionos.com/lv-lv/digitalguide/hostings/tehniskie-jautajumi/mariadb-tabulas-izveide/). Šajā tabulā ir kolonnas „Klienta ID”, „Uzvārds”, „Vārds”, „Pilsēta” un „Izveides datums”. Šāds ir koda izskats:

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

Tagad piepildīsim šo tabulu ar dažām vērtībām. Lai to izdarītu, izmantosim `INSERT INTO`:

```sql
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');
```

Tad izveidojam tabulu „Orders”. Tajā ir kolonnas „OrderID”, „ProductID”, „CustomerName” un „OrderDate”. Kods izskatās šādi:

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

Mēs arī aizpildīsim šo tabulu ar paraugu vērtībām:

```sql
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');
```

Tagad izmantosim `INNER JOIN` MariaDB, lai filtrētu klientus, kuri **parādās klientu sarakstā un ir veikuši pasūtījumu, kas** uzskaitīts tabulas Orders. Atbilstošais kods izskatās šādi:

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

Šajā piemērā mēs koncentrējamies uz uzvārdu klientu sarakstā un klienta vārdu pasūtījumos. Ja šīs vērtības saskan, tās tiek iekļautas rezultātos. Tā kā klienti Meyer un Rodman ir abās tabulās, izvade izskatīsies šādi:

<table>
  <thead>
    <tr>
      <th>Klienta ID</th>
      <th>Klienta vārds</th>
      <th>Pasūtījuma ID</th>
      <th>Produkta ID</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>3</td>
      <td>Meyer</td>
      <td>102</td>
      <td>332</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Rodman</td>
      <td>104</td>
      <td>191</td>
    </tr>
  </tbody>
</table>

## `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ā „CustomerList”) un tikai atbilstošie datu ieraksti no otrās vai labās tabulas („orders”). Ja otrajā tabulā nav ekvivalenta, vērtība **tiek norādīta kā NULL**. Izmantojot iepriekš minēto piemēru, kods izskatās šādi:

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

Tas dod mums šādu rezultātu:

<table>
  <thead>
    <tr>
      <th>Klienta vārds</th>
      <th>Produkta ID</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Smith</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Rodman</td>
      <td>191</td>
    </tr>
    <tr>
      <td>Meyer</td>
      <td>332</td>
    </tr>
    <tr>
      <td>Garcia</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Davis</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

## `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 atbilstošajām vērtībām no pirmās vai kreisās tabulas**. Ja atbilstības nav, rezultātā iegūtā vērtība būs NULL. Zemāk ir redzams kods:

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

Šādi izskatās rezultāts:

<table>
  <thead>
    <tr>
      <th>Klienta vārds</th>
      <th>Produkta ID</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Meyer</td>
      <td>332</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Rodman</td>
      <td>191</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>499</td>
    </tr>
  </tbody>
</table>

Tip Mūsu digitālajā ceļvedī atradīsiet daudz noderīgu apmācību materiālu un rakstu par MariaDB. Piemēram, tur ir MariaDB un MySQL salīdzinājums, apmācība par MariaDB instalēšanu un norādījumi par to, kā atiestatīt MariaDB galveno paroli.


This is a markdown version of: [https://www.ionos.com/lv-lv/digitalguide/hostings/tehniskie-jautajumi/mariadb-pievienosanas/](https://www.ionos.com/lv-lv/digitalguide/hostings/tehniskie-jautajumi/mariadb-pievienosanas/) for AI/LLM consumption.