


Wie rufe ich eine Kategorie und ihre Vorfahren mit rekursivem Self-Join in SQL Server ab?
Verwenden rekursiver Selbstverknüpfungen in SQL Server zum Abrufen von Kategorien und ihren Vorfahren
In diesem Artikel wird gezeigt, wie Sie mithilfe eines rekursiven Selbst-Joins eine Kategorie und ihre Vorgängerkategorien aus einer hierarchischen Tabelle in SQL Server abrufen. Für diese Aufgabe verwenden wir einen Common Table Expression (CTE).
Szenario:
Stellen Sie sich eine Categories
-Tabelle mit den Spalten Id
, Name
und ParentId
vor, die eine hierarchische Kategoriestruktur darstellen. Das Ziel besteht darin, eine Abfrage zu schreiben, die eine bestimmte Kategorie (z. B. „Business-Laptops“) zusammen mit allen übergeordneten Kategorien in einer einzigen, durch Kommas getrennten Zeichenfolge zurückgibt.
Rekursive CTE-Lösung:
Die Lösung verwendet einen rekursiven CTE, um die hierarchische Struktur zu durchlaufen. Hier ist die Abfrage:
WITH CategoryHierarchy AS ( SELECT id, name, CAST(name AS VARCHAR(MAX)) AS path, parent_id FROM Categories WHERE parent_id IS NULL -- Start with root categories UNION ALL SELECT c.id, c.name, CAST(ch.path + ',' + c.name AS VARCHAR(MAX)), c.parent_id FROM Categories c INNER JOIN CategoryHierarchy ch ON c.parent_id = ch.id )
Dieser CTE CategoryHierarchy
verknüpft die Categories
-Tabelle rekursiv mit sich selbst. Die anfängliche SELECT
-Anweisung wählt Stammkategorien aus (solche mit parent_id
als NULL). Das UNION ALL
kombiniert dies mit nachfolgenden rekursiven Auswahlen und erstellt die Zeichenfolge path
durch Verketten von übergeordneten und untergeordneten Kategorienamen.
Abfrage zum Abrufen einer bestimmten Kategorie und Vorfahren:
So rufen Sie die Kategorie „Business-Laptops“ und ihre Vorgänger ab:
SELECT id, name, path FROM CategoryHierarchy WHERE name = 'Business Laptops';
Beispieltabelle und Daten:
Lassen Sie uns eine Beispieltabelle Categories
erstellen und einige Daten einfügen:
CREATE TABLE Categories ( Id INT PRIMARY KEY, Name VARCHAR(100), ParentId INT REFERENCES Categories(Id) ); INSERT INTO Categories (Id, Name, ParentId) VALUES (1, 'Electronics', NULL), (2, 'Laptops', 1), (3, 'Desktops', 1), (4, 'Business Laptops', 2), (5, 'Gaming Laptops', 2);
Erwartetes Ergebnis:
Für die Abfrage, die auf „Business-Laptops“ abzielt, wäre die erwartete Ausgabe:
<code>id name path 4 Business Laptops Electronics,Laptops,Business Laptops</code>
Dieser Ansatz ruft mithilfe eines rekursiven CTE effektiv eine Kategorie und ihre vollständige Abstammung ab und bietet so eine klare und effiziente Lösung für die Navigation hierarchischer Daten in SQL Server. Denken Sie daran, die VARCHAR(MAX)
-Länge anzupassen, wenn Ihre Kategorienamen diese Grenze überschreiten könnten.
Das obige ist der detaillierte Inhalt vonWie rufe ich eine Kategorie und ihre Vorfahren mit rekursivem Self-Join in SQL Server ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In dem Artikel werden mithilfe der Änderungstabelle von MySQL Tabellen, einschließlich Hinzufügen/Löschen von Spalten, Umbenennung von Tabellen/Spalten und Ändern der Spaltendatentypen, erläutert.

Die Volltext-Suchfunktionen von InnoDB sind sehr leistungsfähig, was die Effizienz der Datenbankabfrage und die Fähigkeit, große Mengen von Textdaten zu verarbeiten, erheblich verbessern kann. 1) InnoDB implementiert die Volltext-Suche durch invertierte Indexierung und unterstützt grundlegende und erweiterte Suchabfragen. 2) Verwenden Sie die Übereinstimmung und gegen Schlüsselwörter, um den Booleschen Modus und die Phrasesuche zu unterstützen. 3) Die Optimierungsmethoden umfassen die Verwendung der Word -Segmentierungstechnologie, die regelmäßige Wiederaufbauung von Indizes und die Anpassung der Cache -Größe, um die Leistung und Genauigkeit zu verbessern.

In Artikel werden die Konfiguration der SSL/TLS -Verschlüsselung für MySQL, einschließlich der Erzeugung und Überprüfung von Zertifikaten, erläutert. Das Hauptproblem ist die Verwendung der Sicherheitsauswirkungen von selbstsignierten Zertifikaten. [Charakterzahl: 159]

In Artikel werden Strategien zum Umgang mit großen Datensätzen in MySQL erörtert, einschließlich Partitionierung, Sharding, Indexierung und Abfrageoptimierung.

In Artikel werden beliebte MySQL -GUI -Tools wie MySQL Workbench und PhpMyAdmin beschrieben, die ihre Funktionen und ihre Eignung für Anfänger und fortgeschrittene Benutzer vergleichen. [159 Charaktere]

In dem Artikel werden in MySQL die Ablagerung von Tabellen mithilfe der Drop -Tabellenerklärung erörtert, wobei Vorsichtsmaßnahmen und Risiken betont werden. Es wird hervorgehoben, dass die Aktion ohne Backups, die Detaillierung von Wiederherstellungsmethoden und potenzielle Produktionsumfeldgefahren irreversibel ist.

MySQL unterstützt vier Indextypen: B-Tree, Hash, Volltext und räumlich. 1.B-Tree-Index ist für die gleichwertige Suche, eine Bereichsabfrage und die Sortierung geeignet. 2. Hash -Index ist für gleichwertige Suche geeignet, unterstützt jedoch keine Abfrage und Sortierung von Bereichs. 3. Die Volltextindex wird für die Volltext-Suche verwendet und ist für die Verarbeitung großer Mengen an Textdaten geeignet. 4. Der räumliche Index wird für die Abfrage für Geospatial -Daten verwendet und ist für GIS -Anwendungen geeignet.

In dem Artikel werden in verschiedenen Datenbanken wie PostgreSQL, MySQL und MongoDB Indizes für JSON -Spalten in verschiedenen Datenbanken erstellt, um die Abfrageleistung zu verbessern. Es erläutert die Syntax und die Vorteile der Indizierung spezifischer JSON -Pfade und listet unterstützte Datenbanksysteme auf.
