SQL-Selbstverknüpfung

Sql Selbstverknupfung



Eine der bekanntesten Funktionen relationaler Datenbanken sind Verknüpfungen. Verknüpfungen sind eine der leistungsstärksten und komplexesten Funktionen relationaler Datenbanken. Sie ermöglichen eine umfassende Modularität und sehr komplexe Beziehungen zwischen Datenbanktabellen, ohne Kompromisse bei der Leistung einzugehen.

Es gibt jedoch einen Join-Typ in SQL, der eher unter dem Radar bleibt und als Self-Join bezeichnet wird.

In SQL ist ein Self-Join eine leistungsstarke Technik, die es uns ermöglicht, die Zeilen derselben Tabelle basierend auf einer verwandten Spalte innerhalb derselben Tabelle zu kombinieren.







Im Gegensatz zu den anderen Join-Typen in SQL, bei denen wir die Daten aus mehreren Tabellen übernehmen, funktioniert ein Self-Join für eine einzelne Tabelle.



Sie fragen sich vielleicht: Warum brauche ich einen Self-Join, wenn ich die Daten in der Tabelle selbst nachschlagen kann? Auch wenn das wahr sein mag, kann ein Self-Join bei Aufgaben hilfreich sein, bei denen Sie rekursive Datenabfragen durchführen oder hierarchische Daten finden müssen.



Im Wesentlichen spielt ein Self-Join eine grundlegende Rolle, wenn Sie die Zeilen derselben Tabelle vergleichen müssen.





Begleiten Sie uns in diesem Beitrag und erfahren Sie, was Self-Joins sind, wie sie funktionieren und wie wir sie in einer SQL-Tabelle verwenden können.

HINWEIS: Bevor wir eintauchen, stellen wir zu Demonstrationszwecken eine einfache Tabelle auf. Sie können jedoch jeden unterstützten Datensatz verwenden.



Beispieldaten

Die folgenden Abfragen erstellen eine Basistabelle mit Produktinformationen und fügen die Beispieldatensätze in die Tabelle ein. Dadurch können wir demonstrieren, wie man mit den Self-Joins in SQL arbeitet.

TABELLE ERSTELLEN Produkte (
produkt_id INT PRIMÄRSCHLÜSSEL,
Produktname VARCHAR(255) NICHT NULL,
parent_id INT
);

Fügen Sie der Tabelle 10 Beispieldatensätze hinzu.

INSERT INTO Products (product_id, product_name, parent_id) VALUES
(1, 'Elektronik', NULL),
(2, „Smartphones“, 1),
(3, „Laptops“, 1),
(4, „iPhone 13“, 2),
(5, „Samsung Galaxy S21“, 2),
(6, „MacBook Pro“, 3),
(7, „Dell XPS 15“, 3),
(8, 'Zubehör', NULL),
(9, „Handyhüllen“, 8),
(10, „Laptoptaschen“, 8);

Die resultierende Tabelle sieht wie folgt aus:

Beispiel 1: Grundlegender Selbstbeitritt

Beginnen wir mit einem einfachen Self-Join. Beispielsweise können wir einen einfachen Self-Join verwenden, um die Eltern-Kind-Beziehung derselben Tabelle abzurufen.

Beispielsweise können wir damit alle Produkte und die zugehörigen übergeordneten Produkte finden. Wir können eine Abfrage wie folgt ausführen:

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

In der angegebenen Beispielabfrage verwenden wir „c“ als Alias ​​für die Produkttabelle, die die untergeordneten Produkte darstellt.

Wir erstellen außerdem den Alias ​​„p“ für die Produkttabelle, um die übergeordneten Produkte darzustellen.

Im nächsten Schritt verwenden wir einen einfachen SQL LEFT JOIN, um sicherzustellen, dass die Produkte der obersten Ebene im Ergebnis enthalten sind.

Schließlich verwenden wir die ON-Klausel, um mithilfe der Spalten „parent_id“ und „product_id“ eine Beziehung zwischen den untergeordneten und übergeordneten Datensätzen herzustellen.

Die resultierende Tabelle sieht wie folgt aus:

Sie werden feststellen, dass die übergeordneten Produkte keinen Top-Link haben, da sie sich an der Spitze der Hierarchie befinden und auch als Root-Elemente bezeichnet werden.

Beispiel 2: Hierarchische Daten abrufen

Eine der grundlegendsten Rollen eines Self-Joins ist das Abrufen hierarchischer Daten. Angenommen, wir möchten alle untergeordneten Produkte abrufen, bei denen das Produkt „Zubehör“ lautet. Wir können die Abfrage mit einem Self-Join wie folgt ausführen:

SELECT c.product_name AS child_product
VON Produkten c
JOIN Products p ON c.parent_id = p.product_id
WHERE p.product_name = 'Zubehör';

In diesem Fall verwenden wir einen JOIN, um die Produkttabelle mit sich selbst zu kombinieren, und verwenden dann die WHERE-Klausel, um die gewünschten Ergebnisse herauszufiltern.

Abschluss

In diesem Tutorial haben wir untersucht, was ein Self-Join ist, wie er funktioniert und wie wir ihn in der SQL-Tabelle verwenden können, um hierarchische Daten abzurufen oder rekursive Abfragen durchzuführen.