SQL-i iseliitumine

Sql I Iseliitumine



Relatsiooniandmebaaside üks tuntumaid omadusi on liitumised. Ühendused on üks võimsamaid ja keerukamaid relatsiooniandmebaaside funktsioone. Need võimaldavad ulatuslikku modulaarsust ja väga keerulisi suhteid andmebaasi tabelite vahel jõudlust kahjustamata.

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_product
Toodetest 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_toode
Toodetest 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.