Vonkajšie spojenie SQL

Vonkajsie Spojenie Sql



Je samozrejmé, že spojenie je jednou z najidentifikovateľnejších funkcií relačných databáz. Spojenia nám umožňujú kombinovať údaje z jednej alebo viacerých tabuliek na základe súvisiacej podmienky, aby sme vytvorili koherentnú dátovú operáciu.

V SQL existujú rôzne typy spojení, z ktorých každý má jedinečný spôsob, ako narába s údajmi zo zúčastnených tabuliek alebo výslednej množiny. Jedným z najbežnejších typov spojenia v SQL je OUTER JOIN.







OUTER JOIN v SQL získa všetky zhodné riadky z príslušných tabuliek, ako aj nezhodné riadky z jednej alebo oboch tabuliek. Je to užitočné, keď sa zaoberáte tabuľkami, ktoré obsahujú hodnoty NULL alebo chýbajúce množiny.



Poďme ďalej preskúmať, čo tieto spojenia robia, ako fungujú a ako ich môžeme použiť v databáze SQL.



Požiadavky:

V tomto návode budeme pracovať s MySQL 8.0 a používať vzorovú databázu Sakila. Neváhajte však použiť akýkoľvek iný súbor údajov, ktorý považujete za vhodný.





Typy vonkajších spojení

V SQL existujú tri hlavné typy OUTER JOINS. Tieto typy VONKAJŠÍCH SPOJENÍ zahŕňajú:

  1. Ľavé VONKAJŠIE SPOJENIA

  2. V prípade LEFT OUTER JOINS spojenie získa všetky riadky z ľavej tabuľky a iba zodpovedajúce riadky z pravej tabuľky. Ak neexistujú žiadne zodpovedajúce riadky z pravej tabuľky, spojenie vráti hodnoty NULL pre stĺpce v pravej tabuľke.



  3. Vpravo VONKAJŠIE SPOJENIA

  4. Je to podobné ako pri RIGHT OUTER JOIN. Načíta však všetky riadky z pravej tabuľky, ale iba zodpovedajúce riadky z ľavej tabuľky. Ak neexistujú žiadne zodpovedajúce riadky z ľavej tabuľky, spojenie obsahuje hodnoty NULL pre stĺpce v ľavej tabuľke.

  5. ÚPLNÉ VONKAJŠIE SPOJENIA

  6. Nakoniec tu máme ÚPLNÉ VONKAJŠIE SPOJENIA. Tento typ spojenia kombinuje PRAVÉ aj ĽAVÉ vonkajšie spojenie. Výsledkom je, že spojenie načíta všetky riadky, keď sa nájde zhoda v ľavej alebo pravej tabuľke. Ak nedôjde k žiadnej zhode, spojenie vráti hodnoty NULL pre stĺpce z tabuľky bez zhody.

Syntax SQL OUTER JOIN

Nasledujúci text vyjadruje syntax SQL OUTER JOIN. Je však dobré mať na pamäti, že syntax sa môže mierne líšiť v závislosti od cieľového databázového stroja.

Nasleduje všeobecná štruktúra:

VYBERTE stĺpce
Z tabuľky 1
[LEVA | SPRÁVNE | FULL] OUTER JOIN tabuľka2
ON table1.column_name = table2.column_name;

Syntax OUTER JOIN v SQL je celkom samozrejmá.

Príklady:

Pozrime sa na niektoré príklady použitia, ako môžeme použiť rôzne typy OUTER JOINS v SQL.

Ako sme spomínali, na ukážku použijeme vzorovú databázu Sakila. V tomto prípade používame tabuľky „zákazník“ a „platba“.

Príklad 1: ĽAVÉ VONKAJŠIE SPOJENIE

Začnime OUTTER JOIN. Predpokladajme, že chceme získať všetky informácie o zákazníkovi spolu s informáciami o platbe, ak sú k dispozícii.

Vďaka tomu je možné použiť ĽAVÉ VONKAJŠIE SPOJENIE, pretože chceme všetky informácie o zákazníkovi (vľavo) a informácie o platbe, ak sú k dispozícii (vpravo).

Ak zákazník neuskutočnil žiadnu platbu, spojenie zobrazí hodnoty NULL pre stĺpce súvisiace s platbou.

Príklad je nasledujúci:

VYBRAŤ
c.customer_id,
c.first_name,
c.priezvisko,
p.suma,
p.dátum_platby
OD
zákazník c
LEFT OUTTER JOIN platba str
ON
c.customer_id = p.customer_id;

V danom dopyte zahrnieme stĺpce „customer_id“, „first_name“ a „last_name“ z tabuľky „customer“. Zahrnieme aj sumu a „dátum_platby“ z tabuľky „platba“.

Potom vykonáme ĽAVÉ VONKAJŠIE SPOJENIE medzi tabuľkami „zákazník“ a „platba“ na základe „id_zákazníka“.

Toto sú všetci zákazníci (bez ohľadu na to, či bola platba vykonaná alebo nie) spolu s ich platobnými údajmi (ak existujú).

Príklad výstupu je nasledujúci:

Príklad 2: PRAVÉ VONKAJŠIE SPOJENIE

Teraz prejdime na PRAVÉ VONKAJŠIE PRIPOJENIE. Predpokladajme, že v tomto prípade chceme zahrnúť všetky platobné informácie a súvisiaceho zákazníka, ak nejaké existujú.

V tomto prípade, ak platbu uskutoční zákazník, pripojenie zobrazí podrobnosti tohto zákazníka. Ak existuje platba bez priradeného zákazníka, v stĺpcoch súvisiacich so zákazníkom sa zobrazia hodnoty NULL.

VYBRAŤ
c.customer_id,
c.first_name,
c.priezvisko,
p.suma,
p.dátum_platby
OD
zákazník c
platba RIGHT OUTER JOIN str
ON
c.customer_id = p.customer_id;

Výsledná sada je nasledovná:

Príklad 3: ÚPLNÉ VONKAJŠIE SPOJENIE

ÚPLNÉ VONKAJŠIE PRIPOJENIE na druhej strane získa všetky informácie o zákazníkovi a platbu. Toto zahŕňa všetkých zákazníkov a všetky platby a zobrazuje hodnoty NULL, ak medzi tabuľkami neexistuje žiadna zhoda.

VYBRAŤ
c.customer_id,
c.first_name,
c.priezvisko,
p.suma,
p.dátum_platby
OD
zákazník c
FULL OUTER JOIN platba str
ON
c.customer_id = p.customer_id;

Je dobré mať na pamäti, že MySQL natívne nepodporuje FULL OUTER JOIN. Musíte urobiť nejaké kúzlo jiujitsu s LEFT JOIN, UNION a RIGHT JOIN. Dosť nepríjemné, mohli by sme dodať.

Záver

V tomto návode sme sa dozvedeli všetko o OUTER JOINS. Naučili sme sa, čo je OUTER JOIN v SQL, typy OUTER JOINS a príklady použitia týchto typov OUTER JOINS.