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 :

MySQL me retourne deux fois le même résultat


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 270
    Points : 163
    Points
    163
    Par défaut MySQL me retourne deux fois le même résultat
    Hello All,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT P.*
    FROM annu_produit AS P, annu_site AS S
    WHERE S.`site_valide` ='valide' AND P.`categorie_produit`=3
    Voici ma requête et MySQL (via mon site et via PhpMyAdmin) me retourne deux fois le même résultat (non, je n'ai pas répété ma boucle) :

    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
    stdClass Object
    (
        [pk_produit] => 2
        [fk_site] => 1
    (...)
        [site_valide] => valide
    )
     
    stdClass Object
    (
        [pk_produit] => 2
        [fk_site] => 1
    (...)
        [site_valide] => valide
    )
    Bien évidemment, pk_produit est en PRIMARY.

    J'ai résolu ce problème en utilisant pour le moment un GROUP BY pk_produit mais ça me dérange quand même beaucoup cette histoire.

    Des idées d'où ça vient ?

    merci d'avance,

    Romain

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ca peut venir d'enregistrement ayant les mêmes caractéristiques. Si en principe (je parle de la version finale) tu insères pour qu'il y ait qu'un seul alors il devrait pas avoir de problème après, sinon dans ce cas il faudrait utiliser DISTINCT juste après le SELECT

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 270
    Points : 163
    Points
    163
    Par défaut
    Oui ça fonctionne très bien, mais je ne suis pas sûr de bien avoir compris l'explication car je n'ai que deux enregistrements complètement différents dans cette table...

    Merci donc pour le coup du DISTINCT, mais si vous avez des compléments d'info, n'hésitez pas (je ne mets pas le résolu pour l'instant car je tiens à cette explication :p)

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Quand j'y pense tu as une erreur dans ta requête. Tu fais un produit cartésien mais tu ne donnes pas sur quel élément faire la jointure.

    Il te manque quelquechose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT P.*
    FROM annu_produit AS P, annu_site AS S
    WHERE S.site_valide ='valide' AND P.categorie_produit=3 AND S.champ = P.champ
    Ce qui fait qu'à cause de ce manque, la requête à 100% d'envoyer un résultat incorrect

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 270
    Points : 163
    Points
    163
    Par défaut
    Citation Envoyé par Kerod
    Quand j'y pense tu as une erreur dans ta requête. Tu fais un produit cartésien mais tu ne donnes pas sur quel élément faire la jointure.

    Il te manque quelquechose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT P.*
    FROM annu_produit AS P, annu_site AS S
    WHERE S.site_valide ='valide' AND P.categorie_produit=3 AND S.champ = P.champ
    Ce qui fait qu'à cause de ce manque, la requête à 100% d'envoyer un résultat incorrect
    Merci, il y a des fois où ce genre de choses sortent de la tête et où on tourne en rond.

    Merci encore, une victoire de plus pour la communauté, c'est quand même top de pouvoir bénéficier du recul des autres

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

Discussions similaires

  1. [AJAX] Impossible d'envoyer deux fois la même phrase.
    Par D_ident_1 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/07/2007, 19h26
  2. Différencier deux fois le même bloc
    Par Anduriel dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/11/2006, 09h52
  3. Réponses: 7
    Dernier message: 23/07/2006, 18h50
  4. empecher d'avoir deux fois la même chose dans une listebox
    Par Seb4657 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/03/2006, 21h26
  5. surcharger deux fois le même opérateur
    Par Tex-Twil dans le forum C++
    Réponses: 2
    Dernier message: 01/12/2005, 19h45

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