Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mysql : Deux tables pour faire des pères et fils

Besoin d'un bon coup de main ...

    12 septembre 2017 à 13:57:53

    Bonjour à tous et merci de prendre le temps de lire ce qui suit...

    Cela fait un moment maintenant que je tourne un peu autour du pot pour répondre à une problématique qui ne me semblait pas si compliquée.

    Voilà j'ai deux tables :

    La première Rattachements (id, libelle, niveau)

    La seconde Rattachements_Rattachements (id_pere, id_fils)

    Et c'est ainsi que je réalise mon arborescence avec les données géographique.

    Par exemple, une ville (renseignée dans la table Rattachement au niveau 4) sera rattaché à un département (niveau 3) puis le département sera rattaché à un pays (niveau 2) puis au monde (niveau 1) 

    J'aimerai faire une fonction qui récupérerait tous les rattachement qui prendrait en paramètre :

    - un ID père,

    - un ou plusieurs niveau à récupérer

    et permettrait de récupérer tous les fils... j'ai tenté une requête récursive mais cela est assez compliqué et difficile à maintenir...

    Auriez vous une solution ou quelque chose vers quoi je pourrai m'orienter ?

    Par avance, merci !

    -
    Edité par Coeurdelion 12 septembre 2017 à 13:58:24

    • Partager sur Facebook
    • Partager sur Twitter
      12 septembre 2017 à 14:13:38

      Bonjour,

      MySQL n'aime pas beaucoup la récursivité ...

      Un peu de lecture : http://sqlpro.developpez.com/cours/arborescence/

      J'adoooore la représentation intervallaire :p

      Après, ta modélisation pourrait être simplifiée si un niveau n'a qu'un seul parent :

      • rattachement ( id [pk], libelle, niveau; id_parent [fk] )

      Enfin, si tes niveaux sont "statiques" (monde => pays => département => ville) alors tu pourrais simplement créer ces 4 entités (4 tables) avec une clé étrangère vers le niveau inférieur ...

      -
      Edité par Benzouye 12 septembre 2017 à 14:15:26

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

      Mysql : Deux tables pour faire des pères et fils

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown