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 :

Doublons dans requete


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Points : 33
    Points
    33
    Par défaut Doublons dans requete
    Bonjour à toutes et à tous,
    Je sèche lamentablement sur un problème de requete.

    Je dois afficher toutes les lignes d'une table 'menus' qui contient toutes les catégories d'une table 'categories' et les plats d'une table 'plats'.
    Je ne souhaite avoir qu'une seule fois les categories.
    Or, ma requete, ci-dessous me retourne la catégorie devant chaque plat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $resultat = mysql_query("SELECT * FROM menus 
    INNER JOIN categories
    ON menus.IDCat = categories.IDCat
    INNER JOIN plats
    ON menus.IDPlat = plats.IDPlat
    AND menus.IDTypeMenu = $VarTypeMenu AND menus.NumMenu = $numeromenu
    ORDER BY categories.OrdreCat");
       while ($ligne = mysql_fetch_array($resultat))
       {
       // Affichage de la catégorie du plat
       echo($ligne["Categorie"]." au choix");
       echo "<br>";
       // Affichage du plat
          echo($ligne["Plat"]);
       echo "<br>";
       }
    Comment modifier cette requête de façon à n'obtenir la catégorie qu'une seule fois ?
    Merci pour vos réponses éclairées.

  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 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 032
    Points : 23 767
    Points
    23 767
    Par défaut
    Bonjour,

    Au lieu de ramener toutes les colonnes des 3 tables, il suffit de ramener les catégories distinctes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT categorie 
    FROM menus 
    INNER JOIN categories ON menus.IDCat = categories.IDCat
    INNER JOIN plats ON menus.IDPlat = plats.IDPlat 
    WHERE menus.IDTypeMenu = $VarTypeMenu AND menus.NumMenu = $numeromenu
    ORDER BY categories.OrdreCat
    Au passage, j'ai rajouté une clause WHERE plutôt que de mettre les conditions dans la dernière jointure .

    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
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par ced Voir le message
    Bonjour,

    Au lieu de ramener toutes les colonnes des 3 tables, il suffit de ramener les catégories distinctes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT categorie 
    FROM menus 
    INNER JOIN categories ON menus.IDCat = categories.IDCat
    INNER JOIN plats ON menus.IDPlat = plats.IDPlat 
    WHERE menus.IDTypeMenu = $VarTypeMenu AND menus.NumMenu = $numeromenu
    ORDER BY categories.OrdreCat
    Au passage, j'ai rajouté une clause WHERE plutôt que de mettre les conditions dans la dernière jointure .

    ced
    Merci pour ces modifications !!
    J'ai bien les catégories qui s'affichent une seule fois, mais aucun plat !
    J'avoue humblement être totalement largué.

    Cordialement

  4. #4
    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 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 032
    Points : 23 767
    Points
    23 767
    Par défaut
    Arf !!!
    Si tu veux les 2 dans la même requête, tu n'as pas le choix : la catégorie va se répéter pour tous les plats...

    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

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    31
    Détails du profil
    Informations personnelles :
    Âge : 74

    Informations forums :
    Inscription : Octobre 2006
    Messages : 31
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par ced Voir le message
    Arf !!!
    Si tu veux les 2 dans la même requête, tu n'as pas le choix : la catégorie va se répéter pour tous les plats...

    ced
    Merci tout de même !!
    Je vais envisager la chose autrement.
    Cordialement

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

Discussions similaires

  1. Doublons dans requete UNION
    Par Marc_27 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/02/2011, 11h31
  2. [AC-2003] Doublons dans requete alimentant liste deroulante
    Par TomskyChina dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 28/08/2009, 04h33
  3. Supprimer doublons dans requete
    Par fifoux dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/03/2007, 11h54
  4. Eviter doublon dans Requete Access 2000
    Par Soulama dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/02/2007, 10h13
  5. Éviter les doublons dans une requete
    Par royrremi dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 03/08/2004, 19h37

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