Bonjour à tous,
Je cherche un moyen de faire des requêtes Oracle récursives ou toute autre solution qui me permettrait d'accomplir la tâche suivante.
En gros, j'ai une énorme séquence d'information constituée de données invalides que j'aimerais omettre de mon résultat. Ma "vraie" séquence est constituée de plusieurs milliers d'informations.
À titre d'exemple, prenons la séquence réduite suivante: A7-X1-F6-X2-X3-C0-B1
Cette séquence pourrait être modélisée dans ma base de données comme suit:
La colonne "CLE" est le nom de la clé courante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 WITH MaSequence AS ( SELECT 'A7' AS CLE, 'X1' AS SUIVEUR, null AS PREDECESSEUR FROM dual union ALL SELECT 'X1' , 'F6' , 'A7' FROM dual union ALL SELECT 'F6' , 'X2' , 'X1' FROM dual union ALL SELECT 'X2' , 'X3' , 'F6' FROM dual union ALL SELECT 'X3' , 'C0' , 'X2' FROM dual union ALL SELECT 'C0' , 'B1' , 'X3' FROM dual union ALL SELECT 'B1' , null , 'C0' FROM dual )
La colonne "SUIVEUR" est le nom de la clé suivant la clé courante.
La colonne "PREDECESSEUR" est le nom de la clé précédant la clé courante.
Dans ce modèle de données on défini comme "invalide" une clé débutant par la lettre "X".
Note IMPORTANTE: Il ne faut absolument pas se fier à l'ordre des informations dans la table. Bref, même si dans mon exemple on peut croire que la colonne "CLE" est triée pour respecter une séquence, ce n'est en réalité absolument pas le cas.
Donc, j'aimerais une façon d'omettre (sauter par dessus) les données invalides de façon à avoir le résultat suivant:
CLE,SUIVEUR,PRÉDÉCESSEUR
A7,F6,null
F6,C0,A7
C0,B1,F6
B1,null,C0
Partager