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

PHP & Base de données Discussion :

erreur dans requete mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut erreur dans requete mysql
    bonjour,

    j'ai 3 tables

    une table membre
    id / username / mail

    une table modele_voiture

    id_model / name_model / id_membre_model

    une table velo

    id_velo / name_velo / id_membre_velo

    il y'a un membre "toto" qui a par exemple , 2 annonces dans la table "modele_voiture" et une annonce dans la table "velo"

    dans mon affichage je devrais avoir


    ANNONCES voiture de Toto
    annonce 1
    annonce 2
    ------------------------------------
    ANNONCES vélo de "toto"
    annonce 1


    hors je me retrouve avec 3 fois l'affichage souhaité

    j'ai essayé un group by m.id , mais la il m'affiche

    ANNONCES voiture de Toto
    annonce 1
    ------------------------------------
    ANNONCES vélo de "toto"
    annonce 1

    voila ma requête mysql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $resultats=$connection->query("SELECT  * FROM membre  m
    	LEFT JOIN modele_voiture t ON t.id_membre_model  = ".$_SESSION['id']." 
    	LEFT JOIN table velo cov ON  cov.id_membre_velo = ".$_SESSION['id']."
    	WHERE m.id =".$_SESSION['id']."
    merci pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta structure de table n'est pas bonne : tu devrais avoir une seule table contenant les velos et les voitures.

    Actuellement en joignant velo et voiture tu recuperes toutes les combinaisons de velo / voiture possibles.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci pour la réponse sabotage

    mais en fait j'ai quatre tables , dont une table membre

    pour soumettre mon problème j'ai simplifié.

    je ne peux pas transformer 3 tables qui stockent les annonces de membre en une seule table

    je vais faire 3 requêtes pour chacune des tables si il n'y a pas de solution avec les jointures

    encore merci

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    je ne peux pas transformer 3 tables qui stockent les annonces de membre en une seule table
    Quel est le point blocant ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Avant:
    une table modele_voiture : id_model / name_model / id_membre_model
    une table velo : id_velo / name_velo / id_membre_velo

    Après:
    une table annonce: id / name / id_member / type (qui sera velo, voiture ou autre)

    Cette solution ne pourrait pas fonctionner?
    Si tu avais besoin d'une clé primaire unique, il suffit d'en avoir une composée (id + type)

    Sinon quelque chose comme ça ne te donnera pas de doublon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $resultats=$connection->query("SELECT id_model id_annonce, name_model name, username, "voiture"
    FROM membre, modele_voiture
    WHERE id = ".$_SESSION['id']."
    AND id_membre_model = id
    UNION
    SELECT id_velo id_annonce, name_velo name, username, "velo"
    FROM membre, velo
    WHERE id = ".$_SESSION['id']."
    AND id_membre_velo = id
    Dernière modification par Invité ; 13/06/2013 à 19h08.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci pour la réponse ecatomb

    en fait mes tables sont plus fournis que ce que j'ai posté pour expliquer mon problème. j'ai simplifier pour que ça soit moins long à expliquer.
    j'ai d'autres requête qui viennent interroger ces tables en lien avec encore d'autres tables

    dans l'absolue vos réponse ecatomb et sabotage sont les bonnes , en remaniant les tables une seule requête serait possible mais je vais passer par 3 requêtes , dans mon cas ça sera plus simple

    encore merci

    ps : je n'avais pas vu ta requête ecatomb , je vais la tester , si ça peut m’éviter de faire 3 requêtes ça serait cool

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    je n'ai pas réussi à faire fonctionner ta requête ecatomb

    je vais faire 3 requête , ça n'est pas beaucoup plus lourd

    encore merci

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par serna Voir le message
    je n'ai pas réussi à faire fonctionner ta requête ecatomb
    Oups effectivement, les double quote posent problème ... Il faut dire que j'utilise toujours des données des requêtes donc je n'ai pas l’habitude de mettre une colonne de texte
    Comme ça ce devrait mieux marcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $resultats=$connection->query("SELECT `id_model` id_annonce, `name_model` name, `username`
    FROM membre, modele_voiture
    WHERE `id` = ".$_SESSION['id']."
    AND `id_membre_model` = `id`
    UNION
    SELECT `id_velo` id_annonce, `name_velo` name, `username`
    FROM membre, velo
    WHERE `id` = ".$_SESSION['id']."
    AND `id_membre_velo` = `id`

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci ecatomb,

    la requête fonctionne , mais la répétition des affichage se fait comme dans ma requête avec des jointures

    encore merci

  10. #10
    Invité
    Invité(e)
    Par défaut
    Peux-t vérifier que tu n'a pas de doublons sur les id de tes tables (id_membre_model, id_membre_velo, id)? Ca pourrait expliquer cette répétition.
    Ou alors tu as indiqué une 3ème table qui contiendrait 3 éléments et qui n'a pas de liaison avec les autres.

    On ne sais jamais, ça m'arrivait de temps en temps
    Dernière modification par Bovino ; 14/06/2013 à 07h45. Motif: Inutile de citer un message pour y répondre !!!

  11. #11
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Points : 238
    Points
    238
    Par défaut
    Bonjour,

    et si on revenait à la requête de départ avec un l'idée de UNION proposée par ecatomb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $resultats=$connection->query("SELECT  * FROM membre  m
    	LEFT JOIN modele_voiture t ON t.id_membre_model  =m.id  WHERE m.id =".$_SESSION['id']."
    	UNION SELECT  * FROM membre  m1
    	LEFT JOIN table velo cov ON  cov.id_membre_velo =m1.id
    	WHERE m1.id =".$_SESSION['id']);

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Points : 145
    Points
    145
    Par défaut
    merci mandrake

    mais la requête avec jointure et union me donne une erreur

    j'ai finalement fait une requete avec joiture pour chacune des 3 tables et ça marche

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

Discussions similaires

  1. [debutant] Python, erreur syntaxe dans requete MYSQL !
    Par tutule dans le forum Général Python
    Réponses: 6
    Dernier message: 29/05/2010, 20h39
  2. URGENT : Erreur dans requete
    Par shub dans le forum Access
    Réponses: 5
    Dernier message: 21/06/2006, 11h37
  3. problème de variable dans requetes mysql
    Par Nelmo dans le forum MFC
    Réponses: 6
    Dernier message: 20/05/2006, 23h30
  4. erreur dans requete Sql
    Par flOZ dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/05/2006, 02h49
  5. [TRANSACTION] Erreur dans requete
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 7
    Dernier message: 26/05/2005, 17h38

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