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 :

Utiliser le résultat d'une requête avec jointure [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 72
    Points : 57
    Points
    57
    Par défaut Utiliser le résultat d'une requête avec jointure
    Bonjour,
    Je me trouve confronté à un problème un peu embarrassant.
    Après de nombreuses recherches pour mettre en place ma requête, celle-ci fonctionne mais j'ai du mal à interpréter de manière optimale.

    Cette requête porte sur 4 tables.
    Elle dispose toute d'un champ d'identification commun.

    La voici :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $req = mysql_query("
      SELECT * 
      FROM table1 T1
      LEFT OUTER JOIN table2 T2 ON T1.id_t1 = T2.id_t2
      LEFT OUTER JOIN table3 T3 ON T1.id_t1 = T3.id_t3
      LEFT OUTER JOIN table4 T4 ON T1.id_t1 = T4.id_t4
      WHERE T1.id_t1 = '$id'"

    La variable $id me sert à avoir un seul enregistrement unique en réponse à cette requête.
    Celle-ci fonctionne et m'affiche bien tous les champs de toutes les tables.
    Je fais un traitement derrière pour envoyer les informations dans un tableau mais quand je veux appeler un champ qui se trouve en dehors de la table T1...c'est vide !

    Quelque chose genre :
    $ligne_req['champ_T2'] est vide alors qu'il présente une valeur dans l'exécution de la requête.

    Si vous avez une idée du problème, j'avoue que cela m'aiderait car là, je suis dans le flou le plus complet...

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Points : 83
    Points
    83
    Par défaut
    Peux-tu nous donner le code PHP qui exécute ta requête puis tente d'afficher champ_T2 ?

    Ce sera probablement plus facile de t'aider d'autant que tu fais un traitement pour envoyer toutes les informations dans un tableau.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 72
    Points : 57
    Points
    57
    Par défaut
    Je traite les réponses comme cela :

    if (mysql_num_rows($req) > 0) {
    while ($ligne_req = mysql_fetch_array($req)) {
    ...

    Je vérifie la présence d'au moins 1 résultat et je mets le tout dans un tableau.
    Rien de trop complexe normalement. Sauf que là, ça ne fonctionne pas

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 36
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    Cela peut éventuellement venir des noms générés par le sgbd si par exemple t1 et t2 ont toutes les deux un champ nommé libelle.

    Vérifie bien le nom des colonnes de $ligne_req avec par exemple.

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Le select * c'est mal
    Même si tu as beaucoup de champs c'est pas plus mal de les énuméré avec par exemple un alias spécifique en fonction de la table dont ils dépendent.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 72
    Points : 57
    Points
    57
    Par défaut
    je regarde vos pistes et je reviens vers vous pour la suite savoir si cela fonctionne
    Merci de vous intéresser au problème déjà !

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    A tout fin utile, voici comment se servir des alias pour résoudre ce malicieux problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT t1.a t2.a FROM table_1 AS t1 JOIN table_2 AS t2 ON (t1.id=t2.table_1_id);

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 72
    Points : 57
    Points
    57
    Par défaut
    Merci Benjamin (et les autres ),
    C'est désormais plus clair dans ma tête et j'ai pu résoudre ce problème d'écriture de requête.
    Merci.

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

Discussions similaires

  1. Afficher le résultat d'une requête avec des côtes
    Par sweet_hell dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/10/2006, 10h32
  2. Pb résultats d'une requête avec ou sans Recordset
    Par fredeau dans le forum Access
    Réponses: 3
    Dernier message: 24/04/2006, 14h07
  3. [ABAP] Comment créer une requête avec jointure
    Par roadster62 dans le forum SAP
    Réponses: 1
    Dernier message: 21/02/2006, 16h04
  4. Utilisation du résultat d'une requête
    Par Manu14400 dans le forum Access
    Réponses: 1
    Dernier message: 15/10/2005, 13h01
  5. optimisation d'une requête avec jointure
    Par champijulie dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 07/07/2005, 09h45

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