Bonjour,
Je suis confronté à un problème en SQL, et j'aurais aimé savoir si il y
avait une solution élégante.
Je dispose de deux tables :
- messages, avec un champ id identifiant de façon unique un message (il
y aussi bien entendu d'autre champs comme le texte du message, son
auteur, son intitulé...)
- children, qui, pour chaque parent_id peut avoir aucun ou plusieurs
child_id.
parent_id et child_id sont les identifiants de deux messages (à priori
différents, sinon on risque d'avoir une récursion infinie) de la table
messages.
Je cherche à récupérer le message dont l'id est x ainsi que tous ses
descendants (pour réaliser un arbre ensuite avec un langage de
programmation), et ceci en un nombre de requêtes statiques.
En effet on pourrait récupérer le message dont l'id est x, puis ses
enfants, puis pour chaque enfant ses propres enfants, etc. J'essaie
néanmoins de diminuer le nombre de requêtes.
Petit exemple
messages : 1, 2, 3, 4, 5
children : (parent - enfant)
1 - 2
2 - 4
1 - 5
Si x = 1, je voudrais récupérer les messages 1, 2, 4 et 5.
Après il faudrait voir comment faire l'arbre à partir de ça...
(le langage de programmation serait PHP à priori, puisque People Hate Perl)
Alors si vous avez une solution (conforme à SQL99 si possible), ou même
une petite idée, et bien je vous prie de bien vouloir m'aider.
Merci d'avance.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
loufoque
Je tiens à signaler que j'ai trouvé un début de solution. SQL ne colle pas trop pour modéliser les arbres de façon recursive, alors je pense utiliser la méthode de représentation intervallaire décrite dans l'article ci-lié.
http://sql.developpez.com/arborescence/
Il me reste encore à obtenir le flux XML comme à la fin mais sans les procédures stockées, vues et WITH (j'essaie d'être compatible MySQL...)
Je tiens à signaler que j'ai trouvé un début de solution.
SQL ne colle pas trop pour modéliser les arbres de façon recursive,
alors je pense utiliser la méthode de représentation intervallaire
décrite dans l'article ci-lié.
http://sql.developpez.com/arborescence/
Il me reste encore à obtenir le flux XML comme à la fin mais sans les
procédures stockées, vues et WITH
(j'essaie d'être compatible MySQL...)
Je tiens à signaler que j'ai trouvé un début de solution. SQL ne colle pas trop pour modéliser les arbres de façon recursive, alors je pense utiliser la méthode de représentation intervallaire décrite dans l'article ci-lié.
http://sql.developpez.com/arborescence/
Il me reste encore à obtenir le flux XML comme à la fin mais sans les procédures stockées, vues et WITH (j'essaie d'être compatible MySQL...)
td
fais passer un jeux de test .....
loufoque wrote:
Bonjour, Je suis confronté à un problème en SQL, et j'aurais aimé savoir si il y avait une solution élégante.
Je dispose de deux tables : - messages, avec un champ id identifiant de façon unique un message (il y aussi bien entendu d'autre champs comme le texte du message, son auteur, son intitulé...) - children, qui, pour chaque parent_id peut avoir aucun ou plusieurs child_id. parent_id et child_id sont les identifiants de deux messages (à priori différents, sinon on risque d'avoir une récursion infinie) de la table messages.
Je cherche à récupérer le message dont l'id est x ainsi que tous ses descendants (pour réaliser un arbre ensuite avec un langage de programmation), et ceci en un nombre de requêtes statiques. En effet on pourrait récupérer le message dont l'id est x, puis ses enfants, puis pour chaque enfant ses propres enfants, etc. J'essaie néanmoins de diminuer le nombre de requêtes.
Petit exemple messages : 1, 2, 3, 4, 5 children : (parent - enfant) 1 - 2 2 - 4 1 - 5
Si x = 1, je voudrais récupérer les messages 1, 2, 4 et 5. Après il faudrait voir comment faire l'arbre à partir de ça... (le langage de programmation serait PHP à priori, puisque People Hate Perl)
Alors si vous avez une solution (conforme à SQL99 si possible), ou même une petite idée, et bien je vous prie de bien vouloir m'aider. Merci d'avance.
fais passer un jeux de test .....
loufoque wrote:
Bonjour,
Je suis confronté à un problème en SQL, et j'aurais aimé savoir si il y
avait une solution élégante.
Je dispose de deux tables :
- messages, avec un champ id identifiant de façon unique un message (il
y aussi bien entendu d'autre champs comme le texte du message, son
auteur, son intitulé...)
- children, qui, pour chaque parent_id peut avoir aucun ou plusieurs
child_id.
parent_id et child_id sont les identifiants de deux messages (à priori
différents, sinon on risque d'avoir une récursion infinie) de la table
messages.
Je cherche à récupérer le message dont l'id est x ainsi que tous ses
descendants (pour réaliser un arbre ensuite avec un langage de
programmation), et ceci en un nombre de requêtes statiques.
En effet on pourrait récupérer le message dont l'id est x, puis ses
enfants, puis pour chaque enfant ses propres enfants, etc. J'essaie
néanmoins de diminuer le nombre de requêtes.
Petit exemple
messages : 1, 2, 3, 4, 5
children : (parent - enfant)
1 - 2
2 - 4
1 - 5
Si x = 1, je voudrais récupérer les messages 1, 2, 4 et 5.
Après il faudrait voir comment faire l'arbre à partir de ça...
(le langage de programmation serait PHP à priori, puisque People Hate Perl)
Alors si vous avez une solution (conforme à SQL99 si possible), ou même
une petite idée, et bien je vous prie de bien vouloir m'aider.
Merci d'avance.
Bonjour, Je suis confronté à un problème en SQL, et j'aurais aimé savoir si il y avait une solution élégante.
Je dispose de deux tables : - messages, avec un champ id identifiant de façon unique un message (il y aussi bien entendu d'autre champs comme le texte du message, son auteur, son intitulé...) - children, qui, pour chaque parent_id peut avoir aucun ou plusieurs child_id. parent_id et child_id sont les identifiants de deux messages (à priori différents, sinon on risque d'avoir une récursion infinie) de la table messages.
Je cherche à récupérer le message dont l'id est x ainsi que tous ses descendants (pour réaliser un arbre ensuite avec un langage de programmation), et ceci en un nombre de requêtes statiques. En effet on pourrait récupérer le message dont l'id est x, puis ses enfants, puis pour chaque enfant ses propres enfants, etc. J'essaie néanmoins de diminuer le nombre de requêtes.
Petit exemple messages : 1, 2, 3, 4, 5 children : (parent - enfant) 1 - 2 2 - 4 1 - 5
Si x = 1, je voudrais récupérer les messages 1, 2, 4 et 5. Après il faudrait voir comment faire l'arbre à partir de ça... (le langage de programmation serait PHP à priori, puisque People Hate Perl)
Alors si vous avez une solution (conforme à SQL99 si possible), ou même une petite idée, et bien je vous prie de bien vouloir m'aider. Merci d'avance.