Comment créer un chemin récursif à partir de la base de données Sybase-ASE?
-
15-11-2019 - |
Question
J'ai un problème que j'ai précédemment résolu avec d'autres SGBD mais je ne trouve pas de solution à exécuter avec Sybase-ALE 15.0. Est-ce possible avec SQL (ou vues) sans procédures stockées personnalisées?
Saisir:
ID Name Parent
1 a
2 b 1
3 c 1
4 d 3
Production:
ID PATH
1 a
2 a / b
3 a / c
4 a / c / d
La solution
Réponse simple - Non.
Comment obtenir une liste de valeurs dans la clause Group_By?
Autres conseils
Éditer: Ceci n'est pris en charge que par Sybase SQL n'importe où, et non par l'entreprise de serveur adaptative "professionnelle".
Selon le manuel, Sybase prend en charge les expressions récursives de table communes.
Donc, ce qui suit devrait fonctionner:
WITH RECURSIVE hierarchy_path (id, node_path) AS ( SELECT id, name as node_path FROM the_unknown_table WHERE id = 1 UNION ALL SELECT c.id, p.node_path || ' / ' || c.name FROM the_unknown_table c JOIN hierarchy_path p ON p.id = c.parent_id ) SELECT * FROM path ORDER BY id
Je ne sais pas si Sybase utilise l'opérateur de concaténation SQL standard ||
ou quelque chose de différent. Comme Microsoft ignore la norme là-bas, je suppose que Sybase utilise le +
aussi bien.