Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    Inscrit en
    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

  2. #2
    Expert Confirmé
    Inscrit en
    août 2008
    Messages
    2 152
    Détails du profil
    Informations forums :
    Inscription : août 2008
    Messages : 2 152
    Points : 3 956
    Points
    3 956

    Par défaut

    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 !

  3. #3
    Invité de passage
    Inscrit en
    juin 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 3
    Points : 0
    Points
    0

    Par défaut

    excellent ça fonctionne ! Un grand merci à toi.
    J'ai encore beaucoup de progrès à faire...

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

Liens sociaux

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
  •