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 :
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
    );
soit, pour mon exemple:
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
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.

Ma question (on y arrive) est la suivante.
Quelle est la meilleure facon de représenter mes données sous la forme suivante
:
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
Je suis sous Oracle 10.2
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...