Bonjour à tous,

Imaginons une table :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ESSAI
CHAMPS1 VARCHAR(50)
CHAMPS2 VARCHAR(50)
Qui contiendrait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
D1	NULL
D2	NULL
D2	D3
D2	D5
D2	D6
D2	D7
D2	D8
D2	D9
D3	NULL
D4	NULL
D4	D1
D4	D4
D4	D10
D4	D13
D4	D14
D4	D15
D4	D16
D4	D17
D4	D9
D10	NULL
D10	D12
D11	NULL
D12	NULL
D12	D18
D13	NULL
D13	D13
D5	NULL
D5	D1
D5	D10
D5	D13
D5	D5
D5	D20
D5	D15
D5	D16
D19	NULL
D19	D6
D14	NULL
D20	NULL
D21	NULL
D15	NULL
D6	NULL
D7	NULL
D8	NULL
D22	NULL
D22	D5
D22	D21
D22	D23
D23	NULL
D23	D10
D23	D16
D16	NULL
D17	NULL
D17	D24
D18	NULL
D25	NULL
D25	D10
D25	D6
D25	D16
D25	D9
D9	NULL
D24	NULL
CHAMPS1 comporte un nom, CHAMPS2 comporte le nom hiérarchique lié.

Je cherche à hiérarchiser sans interdépendance ces données ... EN SQL pur ou PL/SQL ...

Ceci afin de récupérer ou d'alimenter une table

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ESSAI2
CHAMPS1 VARCHAR(50)
ORDRE INT
Qui me classerait par le champs ordre (de 1 à 25 dans l'exemple) les noms présents dans CHAMPS 1 (distinct de l'autre table) sans interdépendance ...

Par exemple D1 peut être traiter en ordre 1 car dépendant de rien
mais D2 doit être traité après D3,D5,D6,D7,D8,D9 qui eux même doivent être traités ... Donc cela devrait faire au final un classement ...

Est ce assez clair ?

Si l'on veut on peut enlever ceux qui sont interdépendants eux mêmes (en rouge) des données pour simplifier ...