Siiski on SQL-is teatud tüüpi liitumine, mis kipub jääma radari alla ja mida nimetatakse iseliitumiseks.
SQL-is on iseliitmine võimas tehnika, mis võimaldab meil kombineerida sama tabeli ridu sama tabeli seotud veeru alusel.
Erinevalt teist tüüpi SQL-i liitumistest, kus võtame andmed mitmest tabelist, toimib iseliitmine ühes tabelis.
Võite küsida, miks on mul vaja iseliitumist, kui saan andmeid tabelist ise otsida? Kuigi see võib tõsi olla, võib iseliitmine aidata ülesannete täitmisel, kui peate sooritama rekursiivseid andmepäringuid või leidma hierarhilisi andmeid.
Põhimõtteliselt mängib iseliitmine olulist rolli, kui peate võrdlema sama tabeli ridu.
Liituge meiega selles postituses, kui uurime, mis on iseliitmised, kuidas need töötavad ja kuidas saame neid SQL-i tabelis kasutada.
MÄRKUS. Enne kui sukeldume, koostame tutvustamise eesmärgil põhitabeli. Siiski tunnete, et kasutate mis tahes toetatud andmekogumit.
Näidisandmed
Järgmised päringud loovad tooteteavet sisaldava põhitabeli ja lisavad tabelisse näidiskirjed. See võimaldab meil näidata, kuidas SQL-is iseliitudega töötada.
LOO TABEL Tooted (product_id INT PRIMARY KEY,
toote_nimi VARCHAR(255) NOT NULL,
vanema_id INT
);
Lisage tabelisse 10 näidiskirjet.
INSERT INTO Tooted (toote_id, toote_nimi, vanema_id) VÄÄRTUSED(1, 'Elektroonika', NULL),
(2, 'nutitelefonid', 1),
(3, 'sülearvutid', 1),
(4, iPhone 13, 2),
(5, Samsung Galaxy S21, 2),
(6, 'MacBook Pro', 3),
(7, 'Dell XPS 15', 3),
(8, 'Aksessuaarid', NULL),
(9, 'Telefoniümbrised', 8),
(10, 'sülearvuti kotid', 8);
Saadud tabel on järgmine:
Näide 1: Tavaline iseliitumine
Alustame lihtsast iseliitumisest. Näiteks saame kasutada lihtsat iseliitumist, et tuua sama tabeli vanem-laps-suhe.
Näiteks saame selle abil leida kõik tooted ja neile vastavad ematooted. Saame päringu käivitada järgmiselt:
SELECT c.product_name AS lapse_toode, p.product_name AS parent_productToodetest c
LEFT JOIN Tooted p ON c.parent_id = p.product_id;
Antud näidispäringus kasutame alamtooteid tähistava tootetabeli varjunimena 'c'.
Samuti loome tootetabelile p-aliase, mis tähistab põhitooteid.
Järgmises etapis kasutame tavalist SQL LEFT JOIN-i, et tagada tipptaseme toodete kaasamine tulemusesse.
Lõpuks kasutame ON-klauslit, et luua seos alam- ja ülemkirjete vahel, kasutades veerge „parent_id” ja „product_id”.
Saadud tabel on järgmine:
Märkate, et põhitoodetel pole ülemist linki, kuna need asuvad hierarhia ülaosas, mida nimetatakse ka juurelementideks.
Näide 2: tooge hierarhilised andmed
Iseliitmise üks põhilisi rolle on hierarhiliste andmete hankimine. Oletagem näiteks, et tahame tuua kõik alamtooted, mille toode on võrdne valikuga „Aksessuaarid”. Saame päringu käivitada iseliitmise abil järgmiselt:
SELECT c.product_name AS lapse_toodeToodetest c
JOIN Products p ON c.parent_id = p.product_id
WHERE p.product_name = 'Tarvikud';
Sel juhul kasutame toodete tabeli endaga kombineerimiseks JOIN-i ja seejärel WHERE-klauslit, et filtreerida välja soovitud tulemused.
Järeldus
Selles õpetuses uurisime, mis on iseliitmine, kuidas see töötab ja kuidas saame seda SQL-i tabelis kasutada hierarhiliste andmete toomiseks või rekursiivsete päringute tegemiseks.