cas d'école SQL / decode - tables EMP / DEPT

cas d'école SQL / decode - tables EMP / DEPT - SQL/NoSQL - Programmation

Marsh Posté le 17-11-2004 à 16:01:24    

jour',
 
dans les exercices traditionnels sur les tables emp et dept y'a un exo qui utilise la fonction decode pour renvoyer l'arborescence des employés manager sous cette forme :  
 


president | larbin 1 | larbin 3
          | larbin 2 | larbin 4
                     | larbin 5


 
 
qu'un l'a sous la main ?

Reply

Marsh Posté le 17-11-2004 à 16:01:24   

Reply

Marsh Posté le 17-11-2004 à 17:30:45    

Y a ce genre-là :
 

Code :
  1. SELECT LPAD(' ',2*(LEVEL-1)) || ename org_chart,
  2.         empno, mgr, job
  3.     FROM emp
  4.     START WITH job = 'PRESIDENT'
  5.     CONNECT BY PRIOR empno = mgr;
  6. ORG_CHART    EMPNO      MGR        JOB
  7. ------------ ---------- ---------- ---------
  8. KING               7839            PRESIDENT
  9.   JONES            7566       7839 MANAGER
  10.     SCOTT          7788       7566 ANALYST
  11.       ADAMS        7876       7788 CLERK
  12.     FORD           7902       7566 ANALYST
  13.       SMITH        7369       7902 CLERK
  14.   BLAKE            7698       7839 MANAGER
  15.     ALLEN          7499       7698 SALESMAN
  16.     WARD           7521       7698 SALESMAN
  17.     MARTIN         7654       7698 SALESMAN
  18.     TURNER         7844       7698 SALESMAN
  19.       JAMES        7900       7698 CLERK
  20. CLARK             7782       7839 MANAGER
  21.    MILLER          7934       7782 CLERK


 
Mais ça utilise logiquement du CONNECT BY (et LPAD pour la présentation des données).
 
Cf :
http://www.cs.nott.ac.uk/TSG/manua [...] 9/ch4l.htm

Reply

Marsh Posté le 18-11-2004 à 10:21:58    

nope c'etait pas ca (mirci en tout cas) vu que dans mes tables y'a pas de champ level.
 
non la je suis quasiment certain que c'etait avec un decode

Reply

Marsh Posté le 18-11-2004 à 17:31:36    

En effet, cet exo me dit quelquechose.
 
Par contre c'est pas un DECODE, et pas du Oracle à proprement parler, c'est une fonction de rupture de SQL+ qui permet de faire ça.

Reply

Marsh Posté le 18-11-2004 à 17:37:20    

ah
pitet.

Reply

Marsh Posté le 18-11-2004 à 17:40:53    

Il me semble. Avec un decode à mon avis c'est impossible, car on ne peut pas prendre en compte la ligne du dessus, hors c'est le cas pour faire ce que tu veux.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed