Unió automàtica SQL

Unio Automatica Sql



Una de les característiques més conegudes de les bases de dades relacionals són les unions. Les unions són una de les característiques més potents i complexes de les bases de dades relacionals. Permeten una modularitat àmplia i relacions molt complexes entre taules de bases de dades sense comprometre el rendiment.

Tanmateix, hi ha un tipus d'unió a SQL que acostuma a passar per sota del radar que es coneix com a unió automàtica.

En SQL, una auto-unió és una tècnica potent que ens permet combinar les files de la mateixa taula a partir d'una columna relacionada dins de la mateixa taula.







A diferència de l'altre tipus d'unions en SQL on prenem les dades de diverses taules, una unió automàtica funciona en una sola taula.



Potser us preguntareu, per què necessito una auto-unió quan puc buscar les dades de la mateixa taula? Tot i que això pot ser cert, una unió automàtica pot ajudar en les tasques quan necessiteu realitzar consultes de dades recursives o trobar dades jeràrquiques.



Essencialment, una unió automàtica té un paper fonamental quan cal comparar les files de la mateixa taula.





Uneix-te a nosaltres en aquesta publicació mentre explorem què són les autounions, com funcionen i com les podem utilitzar en una taula SQL.

NOTA: abans de submergir-nos, configurarem una taula bàsica amb finalitats de demostració. Tanmateix, creieu que utilitzeu qualsevol conjunt de dades compatible.



Dades de mostra

Les consultes següents creen una taula bàsica que conté la informació d'un producte i insereix els registres de mostra a la taula. Això ens permet demostrar com treballar amb les autounions en SQL.

CREA LA TAULA Productes (
product_id INT PRIMARY KEY,
nom_producte VARCHAR(255) NOT NULL,
parent_id INT
);

Afegiu 10 registres de mostra a la taula.

INSERT INTO Productes (product_id, product_name, parent_id) VALORS
(1, 'Electrònica', NULL),
(2, 'Telèfons intel·ligents', 1),
(3, 'Portàtils', 1),
(4, 'iPhone 13', 2),
(5, 'Samsung Galaxy S21', 2),
(6, 'MacBook Pro', 3),
(7, 'Dell XPS 15', 3),
(8, 'Accessoris', NULL),
(9, 'Fundes del telèfon', 8),
(10, 'Bosses per a portàtils', 8);

La taula resultant és la següent:

Exemple 1: auto-unió bàsica

Comencem amb una autounió bàsica. Per exemple, podem utilitzar una simple autounió per recuperar la relació pare-fill de la mateixa taula.

Per exemple, el podem utilitzar per trobar tots els productes i els seus corresponents productes pare. Podem executar una consulta de la següent manera:

SELECCIONA c.nom_producte com a producte_fill, nom_p.producte com a producte_parent
DE Productes c
LEFT JOIN Productes p ON c.parent_id = p.product_id;

A la consulta d'exemple donada, utilitzem 'c' com a àlies per a la taula de productes que representa els productes secundaris.

També creem l'àlies 'p' per a la taula de productes per representar els productes principals.

En el següent pas, utilitzem un SQL LEFT JOIN bàsic per garantir que els productes de primer nivell s'incloguin al resultat.

Finalment, utilitzem la clàusula ON per crear una relació entre els registres secundaris i superiors mitjançant les columnes 'parent_id' i 'product_id'.

La taula resultant és la següent:

Notareu que els productes pare no tenen un enllaç superior, ja que es troben a la part superior de la jerarquia, que també es coneixen com a elements arrel.

Exemple 2: Obtenir dades jeràrquiques

Una de les funcions més fonamentals d'una autounió és recuperar dades jeràrquiques. Per exemple, suposem que volem recuperar tots els productes secundaris on el producte és igual a 'Accessoris'. Podem executar la consulta mitjançant una auto-unió de la següent manera:

SELECCIONA c.product_name COM a fill_product
DE Productes c
JOIN Products p ON c.parent_id = p.product_id
WHERE p.product_name = 'Accessoris';

En aquest cas, utilitzem un JOIN per combinar la taula de productes amb si mateix i després fem servir la clàusula WHERE per filtrar els resultats que volem.

Conclusió

En aquest tutorial, hem explorat què és una auto-unió, com funciona i com podem utilitzar-la a la taula SQL per recuperar dades jeràrquiques o realitzar consultes recursives.