SQL-rekursive Abfrage für selbstreferenzierende Tabelle (Oracle)

Nehmen wir an, ich habe folgende Beispieldaten:

| Name     | ID | PARENT_ID |
-----------------------------
| a1       | 1  | null      |
| b2       | 2  | null      |
| c3       | 3  | null      |
| a1.d4    | 4  | 1         |
| a1.e5    | 5  | 1         |
| a1.d4.f6 | 6  | 4         |
| a1.d4.g7 | 7  | 4         |
| a1.e5.h8 | 8  | 5         |
| a2.i9    | 9  | 2         |
| a2.i9.j10| 10 | 9         |

Ich möchte alle Datensätze auswählen, die mit accountId = 1 beginnen. Das erwartete Ergebnis wäre also:

| Name     | ID | PARENT_NAME | PARENT_ID | 
-------------------------------------------
| a1       | 1  | null        | null      |
| a1.d4    | 4  | a1          | 1         |
| a1.e5    | 5  | a1          | 1         |
| a1.d4.f6 | 6  | a1.d4       | 4         |
| a1.d4.g7 | 7  | a1.d4       | 4         |
| a1.e5.h8 | 8  | a1.e5       | 5         |

Momentan kann ich die rekursive Auswahl treffen, aber dann kann ich nicht auf die Daten aus der übergeordneten Referenz zugreifen. Daher kann ich parent_name nicht zurückgeben. Der Code, den ich verwende, ist (angepasst an das vereinfachte Beispiel):

SELECT id, parent_id, name
FROM tbl 
  START WITH id = 1 
  CONNECT BY PRIOR id = parent_id

Welche SQL sollte ich für den oben genannten Abruf verwenden?

Zusätzliche Schlüsselwörter für zukünftige Suchende: SQL zur Auswahl hierarchischer Daten, die durch übergeordnete Schlüssel in derselben Tabelle dargestellt werden

Antworten auf die Frage(5)

Ihre Antwort auf die Frage