Bonjour à tous.
J'ai une base oracle qui gère des Projets, découpés en Phase puis Activités et Taches. (particularité, les Taches peuvent être à tous les niveaux sauf la racine).
En gros :
Projet
++++ Phase 1
++++++++ Activité 1
++++++++++++ Tache 1
++++++++ Activité 2
++++++++++++ Tache 2
++++ Phase 2
++++++++ Tache 3
++++++++ Activité 3
++++++++++++ Tache 4
malheureusement pour moi ceci est représenté ainsi dans la table:
soit, pour mon exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CREATE TABLE TASK ( ID NUMBER(10,0) NULL, NOM VARCHAR2(450) NULL, NIVEAU NUMBER(5,0) NULL, SEQUENCE NUMBER(5,0) NULL, EST_TACHE NUMBER(10,0) DEFAULT 0 NOT NULL );
La hiérarchie est donc représentée par les 2 colonnes NIVEAU et SEQUENCE qui représente la profondeur et "l'ordre" des feuilles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ID ID_PROJET NOM NIVEAU SEQUENCE EST_TACHE 1 1 Phase 1 1 1 0 2 1 Activité 1 2 2 0 3 1 Tache 1 3 3 1 4 1 Activité 2 2 4 0 5 1 Tache 2 3 5 1 6 1 Phase 2 1 6 0 7 1 Tache 3 2 7 1 8 1 Activité 3 2 8 0 9 1 Tache 4 3 9 1
Ma question (on y arrive) est la suivante.
Quelle est la meilleure facon de représenter mes données sous la forme suivante :
Je suis sous Oracle 10.2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ID_PROJET ID_PHASE ID_ACTIVITE ID_TACHE NOM 1 1 NULL NULL Phase 1 1 1 2 NULL Activité 1 1 1 2 3 Tache 1 1 1 4 NULL Activité 2 1 1 4 5 Tache 2 1 6 NULL NULL Phase 2 1 6 NULL 7 Tache 3 1 6 8 NULL Activité 3 1 6 8 9 Tache 4
C'est chaud non ?
je l'ai fait mais c'est horrible...
des UNION + des SELECT MAX(ID) KEEP (dense_rank LAST ORDER BY NIVEAU), etc...
Partager