CONNECT BY-Klausel - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

CONNECT BY-Klausel

Die CONNECT BY-Klausel gibt die Beziehung zwischen Zeilen in einer Hierarchie an. Sie können CONNECT BY verwenden, um Zeilen in einer hierarchischen Reihenfolge auszuwählen, indem Sie die Tabelle mit sich selbst verbinden und die hierarchischen Daten verarbeiten. Sie können dies beispielsweise verwenden, um rekursiv ein Organigramm zu durchlaufen und Daten aufzulisten.

Hierarchische Abfragen werden in der folgenden Reihenfolge verarbeitet:

  1. Wenn die FROM-Klausel eine Verknüpfung enthält, wird diese zuerst verarbeitet.

  2. Die CONNECT BY-Klausel wird ausgewertet.

  3. Die WHERE-Klausel wird ausgewertet.

Syntax

[START WITH start_with_conditions] CONNECT BY connect_by_conditions
Anmerkung

START und CONNECT sind zwar keine reservierten Wörter, Sie sollten jedoch abgegrenzte Kennungen (doppelte Anführungszeichen) oder AS verwenden, wenn Sie START und CONNECT als Tabellenaliasse in Ihrer Abfrage verwenden, um Fehler während der Laufzeit zu vermeiden.

SELECT COUNT(*) FROM Employee "start" CONNECT BY PRIOR id = manager_id START WITH name = 'John'
SELECT COUNT(*) FROM Employee AS start CONNECT BY PRIOR id = manager_id START WITH name = 'John'

Parameter

start_with_conditions

Bedingungen, die die Stammzeile(n) der Hierarchie angeben.

connect_by_conditions

Bedingungen, die die Beziehung zwischen übergeordneten Zeilen und untergeordneten Zeilen der Hierarchie angeben. Mindestens eine Bedingung muss mit dem unären Operator qualifiziert werden, der für den Verweis auf die übergeordnete Zeile verwendet wird.

PRIOR column = expression -- or expression > PRIOR column

Operatoren

Sie können die folgenden Operatoren in einer CONNECT BY-Abfrage verwenden.

LEVEL

Pseudospalte, die die aktuelle Zeilenebene in der Hierarchie zurückgibt. Gibt 1 für die Stammzeile, 2 für das untergeordnete Element der Stammzeile zurück usw.

PRIOR

Unärer Operator, der den Ausdruck für die übergeordnete Zeile der aktuellen Zeile in der Hierarchie auswertet.

Beispiele

Im Folgenden finden Sie eine CONNECT BY-Abfrage, die die Anzahl der Mitarbeiter zurückgibt, die direkt oder indirekt John unterstellt sind, und zwar auf 4 Ebenen begrenzt.

SELECT id, name, manager_id FROM employee WHERE LEVEL < 4 START WITH name = 'John' CONNECT BY PRIOR id = manager_id;

Nachfolgend das Ergebnis der Abfrage.

id name manager_id ------+----------+-------------- 101 John 100 102 Jorge 101 103 Kwaku 101 110 Liu 101 201 Sofía 102 106 Mateo 102 110 Nikki 103 104 Paulo 103 105 Richard 103 120 Saanvi 104 200 Shirley 104 205 Zhang 104

Die Tabellendefinition für dieses Beispiel lautet wie folgt:

CREATE TABLE employee ( id INT, name VARCHAR(20), manager_id INT );

Im Folgenden werden die Zeilen in die Tabelle eingefügt.

INSERT INTO employee(id, name, manager_id) VALUES (100, 'Carlos', null), (101, 'John', 100), (102, 'Jorge', 101), (103, 'Kwaku', 101), (110, 'Liu', 101), (106, 'Mateo', 102), (110, 'Nikki', 103), (104, 'Paulo', 103), (105, 'Richard', 103), (120, 'Saanvi', 104), (200, 'Shirley', 104), (201, 'Sofía', 102), (205, 'Zhang', 104);

Im Folgenden finden Sie ein Organigramm für Johns Abteilung.

Im Folgenden finden Sie ein Organigramm für Johns Abteilung.