Vlastné pripojenie SQL

Vlastne Pripojenie Sql



Jednou z najznámejších funkcií relačných databáz sú spojenia. Spojenia sú jednou z najvýkonnejších a najkomplexnejších funkcií relačných databáz. Umožňujú rozsiahlu modularitu a veľmi zložité vzťahy medzi databázovými tabuľkami bez kompromisov vo výkone.

Existuje však typ spojenia v SQL, ktorý má tendenciu podliehať radaru, ktorý je známy ako samostatné spojenie.

V SQL je self-join výkonná technika, ktorá nám umožňuje kombinovať riadky z tej istej tabuľky na základe súvisiaceho stĺpca v tej istej tabuľke.







Na rozdiel od iných typov spojení v SQL, kde berieme údaje z viacerých tabuliek, samostatné spojenie funguje na jednej tabuľke.



Možno sa čudujete, prečo potrebujem vlastné spojenie, keď môžem vyhľadať údaje zo samotnej tabuľky? Aj keď to môže byť pravda, vlastné spojenie môže pomôcť pri úlohách, keď potrebujete vykonať rekurzívne dátové dotazy alebo nájsť hierarchické dáta.



Vlastné spojenie hrá v podstate zásadnú úlohu, keď potrebujete porovnať riadky tej istej tabuľky.





Pridajte sa k nám v tomto príspevku, keď budeme skúmať, čo sú to vlastné spojenia, ako fungujú a ako ich môžeme použiť v tabuľke SQL.

POZNÁMKA: Predtým, ako sa ponoríme, pripravíme základnú tabuľku na demonštračné účely. Máte však pocit, že použijete akýkoľvek podporovaný súbor údajov.



Vzorové údaje

Nasledujúce dotazy vytvoria základnú tabuľku obsahujúcu informácie o produkte a vložia do tabuľky vzorové záznamy. To nám umožňuje ukázať, ako pracovať s vlastnými spojeniami v SQL.

CREATE TABLE Products (
product_id INT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL,
parent_id INT
);

Pridajte 10 vzorových záznamov do tabuľky.

INSERT INTO Products (product_id, product_name, parent_id) VALUES
(1, 'Elektronika', NULL),
(2, 'Smartfóny', 1),
(3, 'Prenosné počítače', 1),
(4, 'iPhone 13', 2),
(5, 'Samsung Galaxy S21', 2),
(6, 'MacBook Pro', 3),
(7, 'Dell XPS 15', 3),
(8, 'Príslušenstvo', NULL),
(9, 'Púzdra na telefón', 8),
(10, 'Tašky na laptopy', 8);

Výsledná tabuľka je nasledovná:

Príklad 1: Základné vlastné pripojenie

Začnime základným vlastným spojením. Napríklad môžeme použiť jednoduché vlastné spojenie na získanie vzťahu rodič-dieťa tej istej tabuľky.

Môžeme ho použiť napríklad na nájdenie všetkých produktov a im zodpovedajúcich nadradených produktov. Dotaz môžeme spustiť nasledovne:

SELECT c.product_name AS child_product, p.product_name AS parent_product
OD produktov c
LEFT JOIN Products p ON c.parent_id = p.product_id;

V uvedenom príklade dopytu používame „c“ ako alias pre tabuľku produktov, ktorá predstavuje podradené produkty.

Vytvoríme tiež alias „p“ pre tabuľku produktov, ktorá bude reprezentovať nadradené produkty.

V ďalšom kroku použijeme základný SQL LEFT JOIN, aby sme zabezpečili, že do výsledku budú zahrnuté produkty najvyššej úrovne.

Nakoniec používame klauzulu ON na vytvorenie vzťahu medzi podriadenými a nadradenými záznamami pomocou stĺpcov „parent_id“ a „product_id“.

Výsledná tabuľka je nasledovná:

Všimnete si, že nadradené produkty nemajú horný odkaz, pretože sú na vrchole hierarchie, ktoré sú známe aj ako koreňové prvky.

Príklad 2: Získanie hierarchických údajov

Jednou z najzákladnejších úloh vlastného spojenia je získavanie hierarchických údajov. Predpokladajme napríklad, že chceme získať všetky podradené produkty, kde sa produkt rovná „Príslušenstvo“. Dotaz môžeme spustiť pomocou vlastného spojenia takto:

SELECT c.product_name AS child_product
OD produktov c
JOIN Products p ON c.parent_id = p.product_id
WHERE p.product_name = 'Príslušenstvo';

V tomto prípade používame JOIN na spojenie tabuľky produktov so sebou samým a potom pomocou klauzuly WHERE odfiltrujeme výsledky, ktoré chceme.

Záver

V tomto návode sme skúmali, čo je to vlastné spojenie, ako funguje a ako ho môžeme použiť v tabuľke SQL na získanie hierarchických údajov alebo vykonávanie rekurzívnych dotazov.