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 :

Jointure multiple : une table capricieuse [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Par défaut Jointure multiple : une table capricieuse
    Bonjour,

    je possède trois tables:
    1. taches
    2. utilisateurs
    3. taches_type


    'taches' possède une clé étrangère de chacune des deux autres:
    • taches.charge_affaire = utilisateurs.id
    • taches.type_action = taches_types.id


    je souhaite afficher des champs sur ces trois tables dont voici la jointure avec php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $select = self::dbSelect(array(
                    "SELECT" => "taches.date_action, taches.contact, taches.commentaire, utilisateurs.nom_complet, taches_types.nom",
                    "FROM" => "(taches",
                    "INNER JOIN" => "utilisateurs",
                    "ON" => "taches.charge_affaire = utilisateurs.id)",
                    "INNER JOIN" => "taches_types",
                    "ON" => "taches.type_action = taches_types.id",
                    "WHERE" => "taches.id_client = ".$idClient
                ));
    j'obtiens l'erreur:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE taches.id_client = 100012' at line 1
    j’obtiens pourtant un résultat lorsque j'enlève
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "INNER JOIN" => "taches_types",
                    "ON" => "taches.type_action = taches_types.id",
    J'ai vérifié le type des variables dans la bdd.

    Comme vous le constatez j'ai également essayé avec les parenthèses nécessaires à certaines versions de mysql mais rien n'y fait je ne trouve pas mon erreur

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    D'un point de vue purement SQL, ta requête semble correcte.
    As-tu essayé de l'exécuter hors de ton programme, directement dans l'interpréteur de commandes de MySQL ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Par défaut
    Très bonne idée !
    Je viens de tester et ça marche

    Pour le coup je pense que mon probleme vient de $idClient
    pourtant je pense avoir bien vérifier les types

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Par défaut
    je viens de reverifier

    J'ai utilisé intval($idClient, 10)
    et ai meme entré directement la valeur de l'id à la main mais toujours la meme erreur =/

    pourtant le champ est bien un int

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    tes parenthèses dans le sql ???

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM ( table INNER JOIN ... ) INNER JOIN ...

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2013
    Messages : 13
    Par défaut
    Citation Envoyé par papajoker Voir le message
    tes parenthèses dans le sql ???
    Je les ai ajoutées après quelques recherches

    Elles permettraient d'éviter les incompatibilités avec certaines versions de mysql

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

Discussions similaires

  1. Plusieurs jointures sur une table
    Par Tchupacabra dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/09/2006, 15h23
  2. Probleme jointure d'une table sur elle même
    Par fred64 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/05/2006, 15h01
  3. Réponses: 1
    Dernier message: 18/01/2006, 17h51
  4. [MySQL] Jointure sur une table déjà jointe
    Par genova dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/10/2005, 23h54
  5. [arborescence] jointure d'une table avec elle même ?
    Par Celelibi dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/11/2004, 18h48

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