Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 27/01/2010, 09h52   #1
Membre du Club
 
Avatar de albedo0
 
Date d'inscription: février 2007
Localisation: Lyon
Messages: 82
Par défaut Combinaison de requêtes

Bonjour,

Je souhaiterai récupérer des informations sur deux tables distinctes ayant une valeur en commun.

J'ai essayé deux requêtes distinctes :
Tentative 1 :
Code :
$pre = "SELECT pro_etu_num, pro_etu_nom, pro_etu_prenom,
            pro_not_num, pro_not_j1, pro_not_j2,
            pro_not_j3, pro_not_j4, pro_not_j5, pro_not_not1, pro_not_not2,
            pro_not_not3 
    	    FROM prologue_etudiants, prologue_notes_abs
    	    WHERE prologue_etudiants.pro_etu_num = prologue_notes_abs.pro_not_num
    	    AND pro_etu_gp_tice = '".$this -> grp."' 
    	    ORDER BY pro_etu_nom ASC " ;
Tentative 1 :
Code :
$pre = "SELECT * FROM prologue_etudiants
            JOIN prologue_notes_abs
            ON prologue_etudiants.pro_etu_num = prologue_notes_abs.pro_not_num 
            WHERE pro_etu_gp_tice = '".$this -> grp."'
            ORDER BY pro_etu_nom ASC " ;
Mon problème est que ces deux requêtes fonctionnent mais ne me renvoient pas ce que je souhaite. En effet, je n'ai que les données qui se trouvent dans les deux tables.

Alors que je souhaiterai avoir les données de la table "prologue_etudiants" quoi qu'il arrive et récupérer celles de "prologue_notes_abs" si elles existent.

Suis-je obligé de faire ma première requête et de faire une itération sur les résultats pour récupérer les valeurs de la seconde table ?

J'utilise PDO donc je peux faire des requêtes préparées, pour accélerer le traitement, mais ce serait tellement bien d'avoir ce que je veux en une seule requête.

Merci pour votre aide...
albedo0 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/01/2010, 10h03   #2
Expert Confirmé
 
Avatar de Fench
 
Date d'inscription: mai 2002
Localisation: Auvergne
Messages: 1 567
Par défaut

Bonjour,

Si tu veux tous les éléments de ta première table en jointure, il ne faut pas utiliser une jointure normale (ou interne) JOIN (INNER JOIN) mais une jointure externe (OUTER JOIN).

Comme c'est de la première table (ou table de gauche à la jointure) que tu veux tous les éléments alors c'est LEFT OUTER JOIN.

A mettre à la place de ton JOIN dans la requête qui a l'air correcte

PS: j'aurais utilisé des alias vues les longeurs de tes tables ...
__________________
Actuellement AI à l'INRA
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Fench est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/01/2010, 11h03   #3
Membre du Club
 
Avatar de albedo0
 
Date d'inscription: février 2007
Localisation: Lyon
Messages: 82
Par défaut

Effectivement, cela marche impeccable !!

Je connaissais pas ce LEFT OUTER JOIN... bien pratique en tout cas, il faudrait que je me penche sur tout ça !

En tout cas merci beaucoup !
albedo0 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 21h08.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.