requete de type arbre (rechercher n-peres] [mysql] - SQL/NoSQL - Programmation
Marsh Posté le 18-11-2002 à 14:50:58
Ps : la structure n'est pas fixe, donc si vous voyez un meilleur moyen d organiser la ou les tables, je suis preneur.
Marsh Posté le 18-11-2002 à 17:23:54
Une requête récursive
Le truc trop lourd!
Sous forme de curseur, ça doit se faire assez facilement.
En requête brute, là, c'est pas gagné
Marsh Posté le 18-11-2002 à 17:45:54
si tu limites en niveaux de parents / enfants, quelques auto-jointures feront l'affaire, sinon.. non.
Marsh Posté le 18-11-2002 à 17:47:44
Je crois bien que c'est à peu près impossible, à moins d'utiliser une proc' stock', mais ce n'est pas possible avec MySQL, il me semble... C'est pas gagné.
Tu as plutôt intérêt à faire un SELECT * FROM matable et utiliser une fonction récursive en PHP ou autre, en dehors de tout SQL.
Marsh Posté le 18-11-2002 à 17:51:44
Sh@rdar a écrit a écrit : si tu limites en niveaux de parents / enfants, quelques auto-jointures feront l'affaire, sinon.. non. |
Tu m'étonnes, j'ai eu à faire ça à mon taf, dans un vieux langage, aucune boucle WHILE possible, obligé de prier pour qu'ils ne dépassent pas les 5 niveaux
Marsh Posté le 18-11-2002 à 18:44:29
Fred999 a écrit a écrit : Tu m'étonnes, j'ai eu à faire ça à mon taf, dans un vieux langage, aucune boucle WHILE possible, obligé de prier pour qu'ils ne dépassent pas les 5 niveaux |
Idem mais c t limité a 5 niveaux, la cette fois si c expandable :-)
Et oui je me suis penché sur une fonction recursive la :-)
Je crois que j ai peut etre pas choisit la meilleure solution comme fonction, mais au pire je l ameliorais
Marsh Posté le 18-11-2002 à 22:22:59
si tu traites ça en php après un select * fais au moins un champ indexé conteant le niveau de chaque ligne.
comme ça tu pourras au moins trier tes résultats en partant du niveau le plus haut c'est toujours ça de gagné
Marsh Posté le 19-11-2002 à 09:33:18
Bon ca ca marche, mais je sais pas du tout si c'est fait proprement ou pas.
Code :
|
enfants('RG00001';
Marsh Posté le 19-11-2002 à 09:44:24
J ai trouve mieux, le connect by prior mais je sens que mysql ne va aps connaitre ca
Marsh Posté le 19-11-2002 à 10:21:10
Sebastien a écrit a écrit : J ai trouve mieux, le connect by prior mais je sens que mysql ne va aps connaitre ca |
Ca sert à quoi, ce truc ?
Pourquoi tu ne fais pas, comme je disais, un SELECT * pour construire un tableau associatif que tu parcours ensuite récursivement ? Ca te permettrait d'optimiser le nombre de requêtes (tu n'en feras jamais qu'une seule).
Marsh Posté le 19-11-2002 à 11:51:24
http://wwwlsi.supelec.fr/www/yb/po [...] ly_42.html
ET je t avoue que je sais pas trop comment m y prendre pour la recursivité dans un tableau.
Je vais voir ca en reflichissant deux secondes je trouverais peut etre
Marsh Posté le 18-11-2002 à 14:49:22
Voila en gros le systeme :
J ai un systeme de resisddences et sous residences
Une residence peut etre la sous reseidence d'une autre et ca n-fois.
Je voudrais faire une requete qui pour une resisdence donne, tous ses sous-residences et leurs enfants
Donc si je demande la resisdence 1, j aurais
1,2,3,4,5,6
Message édité par Sebastien le 18-11-2002 à 15:06:59