Ich habe eine hierarchische Abfrage, die keine erwartete Zeile (Mitarbeiterausweis = 444) zurückgibt.Hierarchische Abfrage, um die letzte Zeile zurückzugeben
TABLE: hr_data
badge fname supervisor_badge
111 Jeff 222
222 Joe 333
333 John 444
444 Tom 444
SQL:
SELECT CONNECT_BY_ISCYCLE As IC,
badge,
fname,
supervisor_badge
FROM hr_data
START WITH badge = '111'
CONNECT BY NOCYCLE badge = PRIOR supervisor_badge
Was zurückgegeben:
IC badge fname supervisor_badge
0 111 Jeff 222
0 222 Joe 333
1 333 John 444
, was erwartet wird:
IC badge fname supervisor_badge
0 111 Jeff 222
0 222 Joe 333
**0** 333 John 444
**1** 444 Tom 444
Wie kann ich diese Abfrage erhalten, um den Mitarbeiter Tom
zurückzugeben und dann zu stoppen?
Dank aber das gibt java.sql.SQLException: ORA-01436: CONNECT BY-Schleife in Benutzerdaten – jeff
Ich bin nicht vertraut mit dieser Funktion, aber kannst du sowas machen? 'CONNECT BY PRIOR Badge! = PRIOR supervisor_badge UND Badge = PRIOR supervisor_badge'. Gemäß dieser Seite (http://www.rampant-books.com/10g_79.htm) können Sie CONNECT_BY_ISCYCLE auch nicht ohne die NOCYCLE-Klausel verwenden, aber in diesem Fall können Sie die Verwendung von CONNECT_BY_ISCYCLE durch eine Überprüfung ersetzen '(badge = supervisor_badge)' –
Danke DWA. Das funktioniert! Leider ist deine richtige Antwort nur ein Kommentar. – jeff