Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#76 11/04/2011 11:55:36
- chris0938
- Membre
Re : requête récursive with
bonjour,
est ce que en faisant rpm -e et ensuite rpm -ivh cela pourrai résoudre le probléme?
Hors ligne
#77 11/04/2011 12:04:54
- gleu
- Administrateur
Re : requête récursive with
Non, ça ne suffira pas. Il vous faut voir avec quelqu'un qui peut manipuler le serveur avec vous.
Guillaume.
Hors ligne
#78 12/04/2011 10:56:21
- chris0938
- Membre
Re : requête récursive with
Bonjour,
je suis finalement arrive a lancer postgres.
Donc maintenant je peux utiliser les requête récursive. J'ai repris la requête du début du sujet. Elle tourne pendant ~5 et après j'ai ce message
ERROR: write failed
.
Hors ligne
#79 13/04/2011 07:08:50
- Marc Cousin
- Membre
Re : requête récursive with
Je présume qu'il y a une erreur dans la récursion qui fait que la requête n'a aucune condition de sortie.
Marc.
Hors ligne
#80 14/04/2011 14:09:09
- chris0938
- Membre
Re : requête récursive with
effectivement j'avais pris la requête du début du sujet.
la requête suivante fonctionne:
WITH recursive enfant(idEnfant,nomEnfant,level) AS
(
SELECT d.id,d.nom,1
FROM domaine d WHERE d.id=BE509765
union ALL
SELECT d.id,d.nom,e.level + 1
FROM domaine d,enfant e
where d.parent=e.idEnfant
)
SELECT * FROM enfant ORDER BY level;
.
merci pour votre et désolé d'avoir largement débordé sur l'installation.
Une dernière question tant que j'y suis. j'aimerai récupérer les ascendant d'un élément. Avec oracle, il y a SYS_CONNECT_BY_PATH qui est bien pratique. est ce qu'il y a un équivalant pour postgresql ou qui s'en rapproche?
Hors ligne
#81 15/04/2011 07:54:00
- Marc Cousin
- Membre
Re : requête récursive with
Vous avez un problème avec cette requête:
WITH recursive enfant(idEnfant,nomEnfant,level) AS
(
SELECT d.id,d.nom,1
FROM domaine d WHERE d.id=BE509765
union ALL
SELECT d.id,d.nom,e.level + 1
FROM domaine d,enfant e
where d.parent=e.idEnfant
)
SELECT * FROM enfant ORDER BY level;
Que se passe t'il si vous avez une erreur dans la base, et une boucle ? Il est probablement utile de rajouter une colonne profondeur de récursion, et une condition de sortie si elle devient trop élever.
Pour faire le sys_connect_by_path avec la syntaxe with de postgresql, je pense que vous avez intérêt à stocker dans un tableau, pour chaque élément, tous les parents de l'élément (regardez le chapitre sur les fonctions de tableau: http://docs.postgresql.fr/9.0/arrays.html) et ensuite concaténez les éléments de ce tableau sous la forme qui vous plait (à mon avis avec array_to_string: http://docs.postgresql.fr/9.0/functions-array.html)
Marc.
Hors ligne