Bonjour à toutes et à tous,
Je cherche un peu d'aide pour une requete récursive. Par facilité (pour vous et pour moi) je simplifierai l'exemple pour lequel je cherche de l'aide en espérant pouvoir l'adapter à ma situation réelle (infiniment plus complexe).
J'ai une table servant à établir la chaine connectique entre différents appareils (vous pouvez les voir simplement comme des modules avec une entrée et une sortie). Dans cette table je stocke simplement les ID des instruments en entrée et en sortie.
Pour tenter de rendre les choses plus claires j'ai quelque chose dans ce genre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 table ais_connect SENSOR_ID_IN | SENSOR_ID_OUT ------------------------------------ 25 | 4 26 | 3 1000 | 25 1001 | 1000
Ce qui signifie en pratique que la sortie de l'instrument 4 est connectée à l'entrée de l'instrument 25 dont la sortie est reliée à l'entrée de l'intrument 1000 dont la sortie est reliée à l'entrée de l'instrument 1001.
Je cherche donc à faire une requete qui me liste l'ordre de la connectique sachant que je dois partir de l'instrument 4.
Pour l'instant j'ai tenté quelque chose comme ceci (qui risque de choquer les âmes sensibles mais qui ne tente rien n'a rien) :
Mais je reçois un message d'erreur me disant que je ne peux aliaser chain( etc.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 WITH chain(out, in) AS( SELECT sensor_id_out, sensor_id_in FROM ais_connect WHERE sensor_id_out=4 UNION ALL SELECT sensor_id_out, sensor_id_in FROM ais_connect V INNER JOIN chain c ON c.out = V.in) SELECT * FROM chain ;
Pour info j'utilise une base oracle via sqlplus sous linux.
Qqun aurait-il de quoi me mettre sur la voie ?
D'avance, merci pour votre aide!
Partager