|
Politica de confidentialitate |
|
• domnisoara hus • legume • istoria unui galban • metanol • recapitulare • profitul • caract • comentariu liric • radiolocatia • praslea cel voinic si merele da aur | |
TRAVERSAREA ARBORILOR | ||||||
|
||||||
j7t7tt Acest capitol detaliaza recuperarea datelor bazate pe o relatie ierarhi- ca naturala intre doua linii ale tabelei. Traversarea arborilor Parcurgerea arborelui KING EMPNO=7839 | --------------------------------- | | | MGR=7839 CLARK JONES BLAKE | | | | ------ ------------------------- | | | | | | | | MILLER SCOTT FORD ALLEN WARD MARTIN TURNER JAMES | | | | ADAMS SMITH O baza de date relationala nu contine inregistrarile intr-un mod ierarhic. Oricum, unde exista o legatura ierarhica intre liniile unei singure tabele, este un proces numit 'parcurgere de arbore' care face posibil ca ierarhia sa fie construita.Ierarhia poate fi creata privind la legatura dintre valorile echivalente in coloanele EMPNO si MGR(Aceasta legatura a fost deja exploa- tata cu join-ul unei tabele cu ea insesi). Numarul MGR al unui angajat este EMNO-ul sefului sau.Cand este realizata o parcurgere de arbore, nu va asteptati sa vedeti rezultatul cererii asemanator cu figura afisata mai sus. Numerele LEVEL (de nivel) sunt stabilite cand apare parcurgerea arborelui si reprezinta cat de indepartate sunt nodurile (liniile) de radacina (nodul de start). Pentru a construi un arbore de traversare din tabela EMP, introduceti: SELECT LEVEL, DEPTNO, ENAME, JOB, SAL FROM EMP CONNECT BY PRIOR EMPNO = MGR START WITH MGR IS NULL; Comanda Descriere ------- --------- SELECT Clauza SELECT standard, cu pseudo-coloana LEVEL care afiseaza cat de departe este fiecare nod de nodul de start. FROM Puteti sa SELECT FROM o singura tabela. WHERE Limiteaza liniile care sunt vizitate in timpul parcurgerii. CONNECT BY Specifica coloanele unde exista legatura intre linii. Aceasta clauza este ceruta pentru o parcurgere de arbore. PRIOR Stabileste directia in care este parcurs arbo- rele. Daca PRIOR apare inainte de MGR, atunci valorile in coloana MGR sunt vizitate primele, apoi sunt gasite valorile echivalente din EMPNO, care este in susul arborelui. Daca PRIOR apare inainte de EMPNO atunci arborele este in jos. START WITH Specifica unde sa inceapa arborele. Nu poate incepe la un nivel(LEVEL). Aceasta clauza este optionala chiar cand este ceruta o par- curgere de arbore. ORDER BY Apare la sfarsit de obicei. In exemplul de mai sus, structura ierarhica a organizatiei este reflectata in parcurgerea arborelui. Structura raportata conducere/angajati poate fi identificata cu claritate.Puteti folosi clauza ORDER BY pentru a sorta liniile returnate.Urmatoarea comanda este perfect legitima: SELECT LEVEL, DEPTNO, ENAME, JOB, SALFROM EMP CONNECT BY PRIOR EMPNO = MGR START WITH MGR IS NULL ORDER BY DEPTNO; Oricum, este recomandat sa nu folositi clauza ORDER BY la parcurgerea arbo- relui pentru ca ordonarea implicita a arborelui poate fi distrusa. In exemplul de mai jos, ordinea in care liniile lui SCOTT, ADAMS, FORD si SMITH sunt afisate s-a schimbat, si ADAMS pare sa se raporteze la FORD cand SCOTT este de fapt seful sau. Iesirea (rezultatul) nu reflecta ierarhia "adevarata".SELECT LEVEL, DEPTNO, ENAME, JOB, SAL FROM EMP CONNECT BY PRIOR EMPNO = MGR START WITH MGR IS NULL ORDER BY DEPTNO; Parcurgerea arborilor SELECT ENAME, LEVEL, JOBFROM EMP CONNECT BY PRIOR EMPNO = MGR START WITH MGR IS NULL EXCLUDERI : WHERE ENAME!='SCOTT' JONES | ---------------------------- | | SCOTT (se sterge) FORD | | ADAMS SMITH CONNECT BY PRIOR EMPNO=MGR AND ENAME!='SCOTT' JONES | ---------------------------- | | SCOTT (se sterge) FORD | | ADAMS (se sterge) SMITH TERMINOLOGIESunt cativa termeni mai degraba neobisnuiti cand parcurgeti arborele. Nu este nevoie sa-i amintim pe toti, decat pentru informatie: NODE acelasi lucru cu o linie ROOT un nod care nu este in proprietatea nimanui PARENT un nod care are alte noduri la un nivel inferior CHILD un nod care are un PARENT TERMINAL NODE sau LEAF un nod fara fii BRANCH un nod cu fii si nepoti Chirurgia arboreluiClauzele WHERE si CONNECT pot fi folosite pentru a curata arborele, care controleaza ce noduri sunt afisate. Daca clauza WHERE este folosita pentru a elimina un nod, atunci doar acel nod este eliminat. Daca restrictia apare in clauza CONNECT BY atunci intreaga ramura este eliminata. In exemplul urmator, numai linia SCOTT este eliminata, fiii sai sunt inca procesati. BREAK ON DEPTNO SKIP 1 SELECT LEVEL, DEPTNO, ENAME, JOB, SAL FROM EMP WHERE ENAME != 'SCOTT' CONNECT BY PRIOR EMPNO = MGR START WITH MGR IS NULL; In exemplul de mai jos, intreaga ramura SCOTT a fost eliminata:SELECT LEVEL, DEPTNO, ENAME, JOB, SAL FROM EMP CONNECT BY PRIOR EMPNO = MGR AND ENAME != 'SCOTT' START WITH MGR IS NULL; Notati ca de aceasta data ambele linii, parinte (SCOTT) si fiu (ADAMS), au fost excluse.Alte utilizari ale parcurgerii arborilor nota de plata a aplicatiilor materiale, sa produca explozii sau implozii partilor
indentate. bilantul aplicatiilor pentru scopuri de consolidare. |
||||||
|
||||||
|
||||||
Copyright© 2005 - 2024 | Trimite document | Harta site | Adauga in favorite |
|