Requête Récursive
23 Octobre 2017 , Rédigé par Pam007 Publié dans #Sql
Une histoire de Composants/Composés...
create table piece(
piece dec(5, 0) primary key,
libelle varchar(100));
create table compo(
cpse dec(5, 0) not null references piece,
cpsant dec (5, 0) not null references piece,
note varchar(100),
constraint Compo_pas_doublon_cpse_cpsant unique(cpse, cpsant));
with compo2 (niveau2, cpse2, cpsant2, note2) as
(select 1 , cpse, cpsant, note from compo where cpse = 1
union all
select niveau2 + 1 , cpse, cpsant, note
from compo2 join compo on compo2.cpsant2 = cpse
where niveau2 < 9)
search depth first by cpsant2 set col
cycle cpse2 set boucle to '1' default '0'
select niveau2, cpse2, cpsant2 , note2, sant.libelle, se.libelle, boucle
from compo2 left join piece sant on cpse2 = sant.piece
left join piece se on cpsant2 = se.piece
order by col;
"NIV2" "CPSE2" "CPSANT2" "LIBELLE" "LIBELLE" "BOUCLE"
1 1 4 "velo" "cadre" "0"
2 4 8 "cadre" "selle" "0"
2 4 5 "cadre" "fourche" "0"
2 4 6 "cadre" "guidon" "0"
3 6 7 "guidon" "sonnette" "0"
2 4 12 "cadre" "phare av" "0"
3 12 14 "phare av" "ampoule" "0"
2 4 13 "cadre" "phare ar" "0"
3 13 14 "phare ar" "ampoule" "0"
1 1 2 "velo" "roue av" "0"
2 2 10 "roue avant" "jante" "0"
2 2 11 "roue avant" "pneu" "0"
1 1 3 "velo" "roue ar" "0"
2 3 10 "roue ar" "jante" "0"
2 3 11 "roue ar" "pneu" "0"
/image%2F1025633%2F20151122%2Fob_b0e74c_pam007i.png)