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
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top