IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requete récursive pere-fils


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut Requete récursive pere-fils
    Bonjour,

    J'ai un problème d'approche pour écrire une requete récursive sous MySQL...

    Le problème est le suivant, la table `entite` avec une clef primaire `id_entite` et une cléf étrangère `parent_entite` faisant référence a cette meme table `entite` et permettant de faire des association père fils simple...

    l'absence de circuit est garantie par la partie application (donc pas de boucles infinie)

    Ce que je veux faire, c'est une requete qui me sort la liste de tous les parents de la hierarchie jusqu'au niveau racine...

    J'utilise actuellement pour ça une fonction récursive en PHP qui fait autant de requete qu'il y a de parent, mais j'aimerai bien trouvé une solution pour faire ça directement sous forme d'une seule requete.

    Quelqu'un saurait-il m'indiquer une solution pour faire ça ?

    En vous remerciant pas avance

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Je ne suis pas sûr que ça soit possible, sauf à passer par une fonction utilisateur récursive...
    Quelques éléments de réponse, peut-être, dans le tutoriel ici.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Hélas, ce tuto traite juste la manipulation des arbres, et non la programmation de requetes...

    Tant pis, je passerai par un algo recursif classique

    merci pour la réponse

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Citation Envoyé par gloubi Voir le message
    Ce que je veux faire, c'est une requete qui me sort la liste de tous les parents de la hierarchie jusqu'au niveau racine...

    J'utilise actuellement pour ça une fonction récursive en PHP qui fait autant de requete qu'il y a de parent, mais j'aimerai bien trouvé une solution pour faire ça directement sous forme d'une seule requete.

    Quelqu'un saurait-il m'indiquer une solution pour faire ça ?
    L'article de SQLpro cité par Ced te donne exactement la façon de faire ça. Evidemment, ça suppose que tu enrichisses ta table de deux colonnes et qq triggers.

  5. #5
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Citation Envoyé par Antoun Voir le message
    Evidemment, ça suppose que tu enrichisses ta table de deux colonnes et qq triggers.
    Je n'ai pas poussé la lecture jusque la (je doit régler ce pb rapidement), mais je devine la méthode utilisée rapport à l'enrichissement que tu proposes...

    Ajouter des triggers et des champs n'est pas une méthode qui m'enchante non plus je doit dire (je ne sais meme pas si le serveur de prod les supporteras)...

    Non, je pense que je vais rester simple avec une petite fonction qui torche ça vite fait... J'ai rarement plus de 4 niveaux de hierarchie, et j'appel cette fonction qu'une seule fois sur la page... Je ne suis donc pas sur que d'utiliser un trigger soit réellement une optimisation

    Merci quand meme pour les réponses

  6. #6
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    S'il n'y a généralement que 4 niveaux, et si c'est trop lent récursivement (pas la peine de se compliquer la vie inutilement) il serait possible de faire 3 ou 4 "LEFT JOIN" sur la table elle même. Avec le bon tri le résultat ne devrait pas être trop difficile à digérer via PHP et donnera plusieurs niveaux d'un coup. Il restera à traiter au cas par cas (et récursivement) le dernier niveau qui devrait être assez vide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete pere/fils selon type
    Par hwoarang dans le forum Développement
    Réponses: 8
    Dernier message: 15/12/2010, 10h08
  2. requete hierarchique pere et fils
    Par donny dans le forum SQL
    Réponses: 1
    Dernier message: 05/08/2009, 04h21
  3. pere/fils
    Par innosang dans le forum C
    Réponses: 10
    Dernier message: 15/03/2006, 20h58
  4. modeliser relation pere fil
    Par flawer dans le forum Débuter
    Réponses: 20
    Dernier message: 12/12/2005, 11h59
  5. Requete récursive !?!
    Par sami_c dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/11/2005, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo