Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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/12/2011, 13h25   #1
Invité de passage
 
Homme
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 1
Points : 1
Par défaut Requete SQL - ID des derniers commandes

Bonjour,

Je voudrais faire la requete suivante :
Récupérer les identifiants de toutes les dernières commandes de tous les clients.

Code :
1
2
3
SELECT MAX(DateCmd), IDClient 
FROM Commande 
GROUP BY IDClient;
Cette requete me renvoit bien les dernieres commandes, mais je voudrais les ID de ces commandes (et pas les ID des clients).

La requete suivante ;
Code :
1
2
3
SELECT MAX(DateCmd), IDCommande 
FROM Commande 
GROUP BY IDCommande;
me renvoie bien sur tous les enregistrements et pas seulement les dernieres commandes.

J'ai l'impression que c'est une requete toute simple, mais je n'y arrive pas...

Merci de votre aide.
guiwi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 13h31   #2
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 331
Points : 18 331
Envoyer un message via MSN à CinePhil
La première requête te renvoie, pour chaque client, la date de la dernière commande qu'il a passée.

La seconde requête te renvoie, pour chaque commande, la dernière date de la commande. Pas étonnant que tu obtiennes toutes les commandes puisqu'il n'y a qu'une seule date de commande par commande !

Tu veux donc l'identifiant de la dernière commande de chaque client ,
Code :
1
2
3
4
5
6
7
8
9
10
SELECT tmp.IDClient, tmp.date_derniere_commande, c.IDCommande
FROM Commande c
INNER JOIN
(
	SELECT IDClient, MAX(DateCmd) AS date_derniere_commande
	FROM Commande 
	GROUP BY IDClient
) tmp 
	ON tmp.IDClient = c.IDClient
	AND tmp.date_derniere_commande = c.DateCmd
__________________
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/12/2011, 14h02   #3
Invité de passage
 
Homme
Inscription : décembre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : décembre 2011
Messages : 2
Points : 1
Points : 1
Merci beaucoup pour cette réponse rapide.
Ca marche à la perfection.

Encore merci.
guiwi 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 01h48.


 
 
 
 
Partenaires

Hébergement Web