Petit problème sql..

WRInaute accro
Hello,

j'ai un petit soucis.

voila je présente la chose par l'exemple:

j'ai A avec un identifiant ( = id) : 8 et id maître : 0 ( 0 signifie: personne au dessus)
j'ai B avec id : 4 et id maître: 8 (son maître est A)
J'ai C avec id : 1 et id maître: 4
j'ai D avec id : 7 et id maître: 1
j'ai E avec id : 9 et id maître: 4

Lorsque je modifie un paramètre (peu importe lequel) de 8 je veux que cela soit répercuté sur tous ces fils ainsi que ces sous fils...

Est-ce possible en sql uniquement avec ces renseignements ?


-> sinon l'alternative que j'ai trouvé est d'avoir une autre table renseignant tous les sous maître de chacun, par exemple:
pour A avec son id 8, ses sous maîtres : B,C,D,E (tous)
pour B avec son id 4, ses sous maîtres : C et E
pour C avec son id 1, ses sous maîtres : D
Ainsi je n'ai pas de problème, mais c'est plus lourd que la version précédente. Maintenant j'ai réfléchis, mais je ne trouve pas de requête possible pour la vs au dessus. Si vous aviez une idée..
merci d'avance.
 
WRInaute passionné
tu veux gérer une arborescence par auto-jointure. Tu seras obligé de passer par des fonctions récursives pour mettre à jour tout les fils.
 
WRInaute occasionnel
Ce n'est pas un _petit_ problème sql comme tu dis dans ton titre.
Avec Oracle, on utilise "CONNECT BY PRIOR" pour gérer les hiérarchies d'informations.
Malheureusement, même si c'est planifié, cela n'existe pas encore dans MySQL.

Voir ce thread qui peut t'apporter des paliatifs techniques :
-http://forums.mysql.com/read.php?10,32818,32818#msg-32818

Lionel
 
WRInaute accro
spidetra a dit:
tu veux gérer une arborescence par auto-jointure. Tu seras obligé de passer par des fonctions récursives pour mettre à jour tout les fils.
Ok...
donc bien trop lourd..
Il vaut donc mieux utiliser la seconde solution, qui consiste à tout répertorier.

ltressens a dit:
Ce n'est pas un _petit_ problème sql comme tu dis dans ton titre.
Avec Oracle, on utilise "CONNECT BY PRIOR" pour gérer les hiérarchies d'informations.
Malheureusement, même si c'est planifié, cela n'existe pas encore dans MySQL.

Voir ce thread qui peut t'apporter des paliatifs techniques :
-http://forums.mysql.com/read.php?10,32818,32818#msg-32818

Lionel
Ok...
merci pour le link
a vrai dire mon anglais est plus que moyen, le paliatif, n'est-il pas celui que j'ai indiqué ? :?
 
WRInaute passionné
Une solution performante et élégante existe en SQL.

Modélisation des arbres par ensembles emboîtés - Joe Celko - SQL Avancé 2° Edition - Chapitre 29.

Mais pour mettre en place ces techniques il faudrait que les développeurs arrêtent de gérer les arborescences par auto-jointure. :wink:
C'est quand même une vieille méthode hérité des langages procéduraux ( pointeurs du C ).
Dans bc de cas la gestion intervallaire est plus performante.
Ce système est à éviter s'il y a bc d'insertion et de suppression de noeud.
Sur le web, où les opérations de lectures >> opérations de suppression/insertion ce modèle s'adapte assez bien.

Un SGBD n'est pas un système hiérarchique !
 
WRInaute accro
:? :? spidetra j'avoue avoir beaucoup de mal à te suivre :oops:

Je comprend toujours beaucoup mieux et plus rapidement par l'exemple.
est-ce possible avec ta préconisation ? :oops:
 
Discussions similaires
Haut