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 :

Affichage d'un arbre


Sujet :

Requêtes MySQL

  1. #1
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut Affichage d'un arbre
    Bonjour,

    Je suis un peu embéter car je n'arrive pas a creer ma requette pour afficher ma structure en arbre.

    Je m'explique :

    J'ai creer une table qui ressemble a ca :

    --------
    rubrique
    --------
    id_rubrique
    id_pere
    nom
    --------

    Le but étant de pouvoir créer un arbre dont les tronc on un id_pere égaux a leurs id_rubrique et dont chaque branche à son propre id_rubrique et dont leurs père est désigné par id_pere. (jusqu'ici tout vas bien)

    Moi je cherche a afficher les rélutats d'une branche quelconque et de ses fils.

    J'ai donc ecrit ca :
    (petite info, ma table rubrique est liée a une table produit par l'intermédiaire d'une table rubrique_produit)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT p.id_produit
     FROM produit p
      INNER JOIN rubrique_produit rp on rp.id_produit=p.id_produit
      INNER JOIN rubrique sr on sr.id_rubrique=rp.id_rubrique
      INNER JOIN rubrique r on r.id_rubrique=sr.id_pere
       WHERE r.id_rubrique=(ID_DE_LA_BRANCHE)
    Cette requette fonctionne très bien lorsque j'e souhaite afficher une branche qui possède des fils... Malheureusement elle ne fonctionne pas du tout si je souhaite afficher une feuille (une branche qui n'as pas de fils)

    Est ce que quelqu'un peux m'aider svp ? Je vais finir par me pendre sinon ! Vous avez ma vie entre vos mains

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut


    C'est juste pour rendre service.

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Plus sérieusement :
    Requête qui cherche les produits de la rubrique fille (c'est bien ce que tu veux ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT p.id_produit 
    FROM rubrique r LEFT JOIN rubrique sr         ON r.id_rubrique  = sr.id_pere
                    LEFT JOIN rubrique_produit rp ON sr.id_rubrique = rp.id_rubrique
                    LEFT JOIN produit p           ON rp.id_produit  = p.id_produit 
    WHERE r.id_rubrique = (ID_DE_LA_BRANCHE)
    Si tu ne cherches que id_Produit, la requête suivante suffit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT rp.id_produit 
    FROM rubrique r LEFT JOIN rubrique sr         ON r.id_rubrique  = sr.id_pere
                    LEFT JOIN rubrique_produit rp ON sr.id_rubrique = rp.id_rubrique
    WHERE r.id_rubrique = (ID_DE_LA_BRANCHE)
    Mais bien sur les produit de la rubrique fille seront null si celle-ci n'existe pas.

  4. #4
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Merci de ta réponse Médiat, ta requette fonctionne bien mais je cherche les filles mais également le père... et c'est la que le probleme se pose :/

    Au secours !! il ne me reste plus que quelques heures a vivre !!!

  5. #5
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Bon j y suis aller à l'arrache et j'ai fait 2 requettes avec un union entre les deux...

    Je ne sait pas si c'est une bonne idée d'un point de vue optimisation, aussi je voudrais savoir si j'ai bien fait avant de noter ce post comme résolu.

    Merci

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Postes tes requêtes que je comprenne bien ce que tu veux

  7. #7
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    La requette qui fait bien ce que je veux ressemble a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT p.id_produit
     FROM produit p
      INNER JOIN rubrique_produit rp ON rp.id_produit=p.id_produit
      INNER JOIN rubrique sr         ON sr.id_rubrique=rp.id_rubrique
      INNER JOIN rubrique r          ON r.id_rubrique=sr.id_pere
       WHERE r.id_rubrique=(MON_ID_RUBRIQUE)
     UNION
    SELECT p.id_produit
     FROM produit p
      INNER JOIN rubrique_produit rp ON rp.id_produit=p.id_produit
      INNER JOIN rubrique r          ON r.id_rubrique=rp.id_rubrique
       WHERE r.id_rubrique=(MON_ID_RUBRIQUE)
    Je ne sait pas si ca aide mais bon merci d'essayer

    Déja je me pendrais pas c'est cool )

  8. #8
    Membre chevronné Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Par défaut
    Je voudrais pas vous décourager mais Oracle a introduit un opérateur spécial pour parcourir des structures arboresentes : CONNECT BY

    MySQL le prévoit à moyen terme. Je ne trouve plus l'URL qui décrit les fonctionnalités à venir mais je crois bien l'avoir vu.
    Donc, à programmer sans ça...... bonjour!

  9. #9
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par Soutou
    Je voudrais pas vous décourager mais Oracle a introduit un opérateur spécial pour parcourir des structures arboresentes : CONNECT BY

    MySQL le prévoit à moyen terme. Je ne trouve plus l'URL qui décrit les fonctionnalités à venir mais je crois bien l'avoir vu.
    Donc, à programmer sans ça...... bonjour!
    :
    Je ne vois pas la moindre tentative d'écrire une requête avec CONNECT BY ici.


    Higestromm>> si j'ai bien compris, tu veux les produits de la rubrique en cours et de ses fils, ta solution est sans doute la meilleure, d'autant plus que l'UNION va te dédoublonner le résultat.

  10. #10
    Membre éclairé Avatar de Higestromm
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    516
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 516
    Par défaut
    Ok Médiat Merci encore de ton aide

    (sauvé)

  11. #11
    Membre chevronné Avatar de Soutou
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 328
    Par défaut
    Oui, j'ai du lire en vitesse et de travers ce problème. L'heure était tardive aussi. En fait je viens sur le forume pour me faire remettre en place, ça fait du bien à tout le monde.
    Le pb est réglé, tout est bien qui finit bien.

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

Discussions similaires

  1. affichage élégant d'arbre
    Par Bayard dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 20/11/2007, 11h02
  2. Affichage d'un arbre
    Par info_amel dans le forum Débuter
    Réponses: 7
    Dernier message: 04/09/2007, 20h19
  3. code source pour l'affichage d'un arbre
    Par med_anis_dk dans le forum C
    Réponses: 5
    Dernier message: 27/05/2006, 15h11
  4. code pour l'affichage d'un arbre en visual c++
    Par med_anis_dk dans le forum MFC
    Réponses: 8
    Dernier message: 24/05/2006, 22h16
  5. affichage d'un arbre
    Par romainsquash dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/01/2006, 15h00

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