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
| WITH service AS
(
SELECT 1 id, null id_parent, 'direction' nom, 1 niveau FROM dual
UNION SELECT 2, 1, 'ss-dir1' , 2 FROM dual
UNION SELECT 3, 1, 'ss-dir2' , 2 FROM dual
UNION SELECT 4, 2, 'ss-dir3' , 3 FROM dual
UNION SELECT 5, 2, 'ss-dir4' , 3 FROM dual
)
SELECT niv3.id,
niv3.niveau,
niv1.nom,
niv2.nom,
niv3.nom
FROM service niv3
LEFT OUTER JOIN service niv2 ON (niv2.id=niv3.id_parent)
LEFT OUTER JOIN service niv1 ON (niv1.id=niv2.id_parent)
WHERE niv3.niveau = 3
UNION
SELECT niv2.id,
niv2.niveau,
niv1.nom,
niv2.nom,
NULL
FROM service niv2
LEFT OUTER JOIN service niv1 ON (niv1.id=niv2.id_parent)
WHERE niv2.niveau = 2
UNION
SELECT niv1.id,
niv1.niveau,
niv1.nom,
NULL,
NULL
FROM service niv1
WHERE niv1.niveau = 1 |
Partager