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 :

Erreur dans le résultat de ma requête


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Points : 61
    Points
    61
    Par défaut Erreur dans le résultat de ma requête
    Bonsoir,
    J'ai 2 tables.

    Table classement_des_equipes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      id  categorie  equipe  joues  gagnes  perdus
          21 shd1 Vélizy2  0 0 0  
          22 shd1 Le Chesnay2  0 0 0  
          23 shd1 Montigny le Bretonneux3 0 0 0 
          24 shd1 Bois d`Arcy2 0 0 0 
          25 shd1 Houilles 0 0 0  
          26 shd1 Maurepas 0 0 0 
          27 shd1 Poissy2 0 0 0  
          28 shd1 Plaisir-Villepreux3 0 0 0  
          29 shd1 Montigny le Bretonneux2 0 0 0  
          30 shd1 Viroflay 0 0 0
    et table equipes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      ID abrege nomreel
          12   shd1   Séniors H. D1-2  
          13   shd1   Séniors H. D1-3  
          14   sfd1   Séniors F. D1 
          15   sfr2   Séniors F. R2 
          16   shr2   Séniors H. R2
    Et voici ma reqête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT t1.categorie, t1.equipe, t1.joues, t1.gagnes, t1.perdus, t2.abrege, t2.nomreel
    FROM classement_des_equipes AS t1, equipes AS t2
    WHERE t1.categorie LIKE '%h%'
    AND t1.equipe LIKE '%Montigny le B%'
    AND t1.categorie = t2.abrege
    GROUP BY t2.nomreel
    ORDER BY t2.nomreel
    Le resultat me donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    categorie  equipe  joues  gagnes  perdus  abrege nomreel
    shd1    Montigny le Bretonneux3    0 0 0    shd1    Séniors H. D1-2
    shd1    Montigny le Bretonneux3    0 0 0    shd1    Séniors H. D1-3
    shr2    AS Montigny le Bretonneux    0 0 0    shr2    Séniors H. R2
    Dans mon résultat, j'ai 2 fois Montigny le Bretonneux3, alors que je souhaiterais Montigny le Bretonneux2 et Montigny le Bretonneux3.
    Si j'enlève le group by, j'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    categorie  equipe  joues  gagnes  perdus  abrev  nomreel   actif  
    shd1    Montigny le Bretonneux2 0 0 0    shd1    Séniors H. D1-2 
    shd1    Montigny le Bretonneux3 0 0 0    shd1    Séniors H. D1-2 
    shd1    Montigny le Bretonneux2 0 0 0    shd1    Séniors H. D1-3 
    shd1    Montigny le Bretonneux3 0 0 0    shd1    Séniors H. D1-3 
    shr2    AS Montigny le Bretonneux 0 0 0    shr2    Séniors H. R2 1
    ce qui n'est pas satisfaisant non plus. Quelqu'un peut me dire comment faire svp ?

  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 034
    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 034
    Points : 23 770
    Points
    23 770
    Par défaut
    Bonjour,

    Le problème ne vient pas tant de la requête (pour laquelle le GROUP BY ne sert à rien et devrait éventuellement être remplacé par le mot-clef DISTINCT après le SELECT) que des données.
    En effet, tu fais une jointure entre les 2 tables sur la colonne categorie dans la première table et abrege dans la seconde.
    Or, dans la seconde table, il y a 2 lignes pour lesquelles abrege vaut "shd1". Du coup, après jointure, toutes les lignes de la première tables dont la categorie est "shd1" sont nécessairement doublées.

    C'est visiblement un problème de conception de la base de données ou de données plutôt que de requête...
    D'où la question : que signifie categorie et abrege dans chaque table et qu'attends-tu de la requête (que souhaites-tu obtenir) ?

    ced

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    Categorie dans la premiere table correspond à la categorie de l'equipe.
    Dans la seconde table, abrege correspond à la même chose, SAUF que dans cette table, j'ai 2 equipes dans cette categorie (Montigny 2 et Montigny 3).

    Je souhaite en faite obtenir les résultats de CHAQUE equipe séparément afin de construire un graphique par équipe.
    C'est pour cette raison que je souhaite avoir en résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    categorie  equipe  joues  gagnes  perdus  abrege nomreel
    shd1    Montigny le Bretonneux2    0 0 0    shd1    Séniors H. D1-2
    shd1    Montigny le Bretonneux3    0 0 0    shd1    Séniors H. D1-3
    shr2    AS Montigny le Bretonneux    0 0 0    shr2    Séniors H. R2
    Le nomreel quant à lui est juste là pour l'affichage clair du graphique.

  4. #4
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Ta deuxième table ne semble pas être relié à la première.. avec quel information peut on déterminer que Montigny le Bretonneux2 est associé à Séniors H. D1-2 ?

    Si abrege est ta clée pour liée ta table 1 et 2, tu ne peux pas avoir deux ligne identique comme c'est le cas ici avec shd1, on ne pourra alors jamais savoir si tu veux liée une ligne de ta table 1 avec Séniors H. D1-1 ou Séniors H. D1-2.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 133
    Points : 61
    Points
    61
    Par défaut
    Ok, je comprends ou est mon erreur avec tes explications.
    Je pense qu'une modification sur le contenu de mes tables s'impose.

    Merci à vous 2.

Discussions similaires

  1. Erreur dans l'exécution d'une requête
    Par ouinih dans le forum SQL
    Réponses: 3
    Dernier message: 11/06/2008, 23h32
  2. générer des n° de lignes dans le résultat d'une requête
    Par karimspace dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 13/09/2007, 20h33
  3. Empêcher les doublons dans le résultat de la requête
    Par bouba_95 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 17/07/2007, 18h32
  4. [SQL] Recherche dans le résultat d'une requête
    Par Ekik dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/03/2007, 10h32
  5. [MySQL] erreur dans le résultat d'un select
    Par abidi_niz dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/06/2006, 09h46

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