Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 16/09/2011, 12h01   #1
Nouveau Membre du Club
 
Homme Philippe RONZEVALLE
Inscription : juin 2007
Messages : 82
Détails du profil
Informations personnelles :
Nom : Homme Philippe RONZEVALLE
Âge : 53
Localisation : France

Informations forums :
Inscription : juin 2007
Messages : 82
Points : 26
Points : 26
Par défaut Requete avec JOIN

Bonjour à tous,

J'ai un problème sur une requête SQL et je n'arrive pas à comprendre où est mon erreur.

Je m'occupe d'un club de ski et j'ai une table adhérent avec 100 enregistrements. Au cours de la saison j'alimente une table cours avec des informations sur la date et la nature des cours pris par adhérent.

Je désire récupérer les informations des 2 tables avec comme base la table adhérents sur laquelle viendrait se greffer les informations de la table cours.

Le problème est que je n'obtiens avec la requête ci-dessous que les adhérent qui ont eu des cours alors que je cherche à avoir tous les adhérents (100 en l'occurence) et lorsqu'il y en a eu, les cours qu'ils ont suivis.

Merci de votre aide.
Bonne journée.

Code :
1
2
3
4
5
6
7
8
 $requete = mysql_query('
  SELECT * 
  FROM adherent 
  LEFT JOIN cours ON  adherent.id_adherent = cours.id_adherent 
  WHERE cours.annee="'.$an.'" 
    AND  cours.mois="'.$mo.'" 
  ORDER BY  adherent.id_adherent'
) OR die("erreur  requete ".mysql_error());
przvl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 12h08   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
C'est à cause du filtre (le WHERE), regarde Jointure externe et condition de restriction. Il faut placer les filtres dans la condition de jointure (le ON)
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 12h11   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Ce billet de mon blog t'expliquera pourquoi ta jointure externe est en fait une jointure interne et le moyen de remédier à ce problème !

Par ailleurs :
1) Évite la guerre des étoiles !

2) Année et mois sont des entiers donc inutile de les mettre entre apostrophes, encore moins entre guillemets puisque tu as mis la chaîne SQL entre apostrophes. Il vaut mieux faire le contraire : mettre la chaîne SQL entre guillemets afin de pouvoir mettre, comme il se doit, les valeurs textuelles entre apostrophes dans la requête.

3) Tu gagnerais en clarté en utilisant des alias dans la requête au lieu de répéter partout le nom des tables. Et ça fait moins de texte à écrire !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 14h05   #4
Nouveau Membre du Club
 
Homme Philippe RONZEVALLE
Inscription : juin 2007
Messages : 82
Détails du profil
Informations personnelles :
Nom : Homme Philippe RONZEVALLE
Âge : 53
Localisation : France

Informations forums :
Inscription : juin 2007
Messages : 82
Points : 26
Points : 26
Merci pour vos réponses qui viennent de me permettre de résoudre ce problème précis et de m'améliorer.

Pour la guerre des étoiles, je vais devenir un fidèle combattant.

Encore merci et bonne fin de journée.
przvl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h52.


 
 
 
 
Partenaires

Hébergement Web