Connect by in Oracle SQL
Angenommen, wir haben folgenden Tabellen
create table Employee(
2 EMPNO NUMBER(3),
3 ENAME VARCHAR2(15 BYTE),
4 HIREDATE DATE,
5 ORIG_SALARY NUMBER(6),
6 CURR_SALARY NUMBER(6),
7 REGION VARCHAR2(1 BYTE),
8 MANAGER_ID NUMBER(3)
9 )
und
create table job (
2 EMPNO NUMBER(3),
3 jobtitle VARCHAR2(20 BYTE)
4 )
5 /
Mich interessiert, was die folgenden Abfrage nicht
SELECT empno, manager_id, ename
2 FROM employee
3 START WITH empno = 1
4 CONNECT BY PRIOR empno = manager_id;
Als ich verstanden, dass dieser code wählt empno
,manager_id
,ename
Mitarbeiter, es beginnt die Auswahl aus dieser Reihe, wo empno=1
, konnte aber nicht verstehen, was diese Zeile macht:
CONNECT BY PRIOR empno = manager_id;
Ist dies das gleiche wie:
where empno=manager_id?
InformationsquelleAutor dato datuashvili | 2012-06-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dadurch wird die Rekursion. Alle Datensätze, die Teil der nächst tieferen hierarchischen Ebene zurück. Dies gibt eine Hierarchie von oben nach unten für alle Führungskräfte und Ihre jeweiligen arbeiten unter Untergebenen.
Einfach, Wann immer Sie möchten, zu bekommen, was die Eltern-Kind-Beziehung in einer hierarchischen Art und Weise.
InformationsquelleAutor manurajhada
Die Abfrage rekursiv ist, starten Sie es vom Mitarbeiter #1 (Vorstandsvorsitzender wahrscheinlich) und dann rekursiv druckt alle seine Untergebenen und dann alle Ihre Untergebenen und so weiter und so weiter (bis alle Mitarbeiter werden ausgedruckt).
Eine gute Erklärung über das "BEGINNEN MIT" und "VERBINDEN" kann gefunden werden hier
InformationsquelleAutor alfasin