Précédent   Forum du club des développeurs et IT Pro > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/12/2012, 19h40   #1
nicojet
Invité de passage
 
Inscription : juin 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 3
Points : 0
Points : 0
Par défaut un seul enregistrement retourné sur Left Join ?

Bonjour,

Je débute en sql et galère sur une requête.

Voici mon problème :
Je souhaite obtenir la liste des clients abonnés à la newsletter avec (si elle existe) la date de leur dernière commande.

J'utilise LEFT JOIN mais évidemment, j'obtiens toutes les commandes des clients. Je ne souhaite qu'un seul enregistrement par client.

la requête :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT 
	Client.IDClient AS IDClient,	
	Client.civilite AS civilite,	
	Client.nom AS nom,	
	Client.prenom AS prenom,	
	Client.mail AS mail,	
	Commande.date_comm AS date_comm
FROM 
	Client
	LEFT OUTER JOIN
	Commande
	ON Client.IDClient = Commande.IDClient
WHERE 
	(
	Client.Newsletter = 1
	AND	Client.mail <> ''
)
Merci pour votre aide
nicojet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 20h27   #2
skuatamad
Expert Confirmé
 
Inscription : août 2008
Messages : 1 690
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 690
Points : 2 812
Points : 2 812
Il suffit d'utiliser MAX, non ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
SELECT Client.IDClient AS IDClient,	
       Client.civilite AS civilite,	
       Client.nom AS nom,	
       Client.prenom AS prenom,	
       Client.mail AS mail,	
       max(Commande.date_comm) AS date_comm
  FROM Client
  LEFT OUTER JOIN Commande
    ON Client.IDClient = Commande.IDClient
 WHERE Client.Newsletter = 1
   AND Client.mail <> ''
 GROUP BY Client.IDClient AS IDClient,	
          Client.civilite AS civilite,	
          Client.nom AS nom,	
          Client.prenom AS prenom,	
          Client.mail AS mail
Bon ça m'est totalement contre nature mais en cas de problème de perf regarde :
Démythifier le GROUP BY
Evidemment ça n'est envisageable QUE parceque le regroupement intègre l'iDClient et QUE des colonnes de la table client !
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 21h04   #3
nicojet
Invité de passage
 
Inscription : juin 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 3
Points : 0
Points : 0
excellent ça fonctionne ! Un grand merci à toi.
J'ai encore beaucoup de progrès à faire...
nicojet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h30.


 
 
 
 
Partenaires

Hébergement Web