[mySQL] agrégation par date les plus récentes

Le
Stan
Bonjour,

je dispose de 2 tables :

Client:
- IDclient
- Nom
- Prénom

Rdv: ( Rendez-vous )
- IDrdv
- clientID
- DateRdv

La cardinalité entre Client et Rdv est 0..n

Quelle est la requête qui me permettra d'afficher
la liste Nom,Prenom,date pour chaque client, trié sur le
champ date, avec la date la plus récente pour chaque rendez-vous
d'un client ?

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Stan
Le #21920371
Un petit oubli :
Sur MySql 5 !
Alain Montfranc
Le #21920361
Stan a exposé le 07/12/2009 :
Bonjour,

je dispose de 2 tables :

Client:
- IDclient
- Nom
- Prénom

Rdv: ( Rendez-vous )
- IDrdv
- clientID
- DateRdv

La cardinalité entre Client et Rdv est 0..n

Quelle est la requête qui me permettra d'afficher
la liste Nom,Prenom,date pour chaque client, trié sur le
champ date, avec la date la plus récente pour chaque rendez-vous
d'un client ?

Merci d'avance.



Seulement le dernier RDV pour chaque client ?

select Nom, Prenom, max(date) from Client, Rdv where Client.clientID =
Rdv.client ID group by Nom, Prenom order by max(date)
Stan
Le #21920351
On 7 déc, 16:45, Alain Montfranc
Stan a exposé le 07/12/2009 :



> Bonjour,

> je dispose de 2 tables :

> Client:
> - IDclient
> - Nom
> - Prénom

> Rdv: ( Rendez-vous )
> - IDrdv
> - clientID
> - DateRdv

> La cardinalité entre Client et Rdv est 0..n

> Quelle est la requête qui me permettra d'afficher
> la liste Nom,Prenom,date pour chaque client, trié sur le
> champ date, avec la date la plus récente pour chaque rendez-vous
> d'un client ?

> Merci d'avance.

Seulement le dernier RDV pour chaque client ?




Oui.

select Nom, Prenom, max(date) from Client, Rdv where Client.clientID =
Rdv.client ID group by Nom, Prenom order by max(date)




En cherchant par moi-même, j'avais trouvé ça :

select Nom, Prenom, Date FROM Client
left join (
select Rdv.clientID, MAX(Date) AS Date from Rdv
group by Rdv.clientID
) on Client.IDclient = Rdv.clientID

Qu'en pensez-vous ?
yves
Le #21920341
Le Mon, 07 Dec 2009 01:36:50 -0800, Stan a écrit:

Bonjour,

Un petit oubli :
Sur MySql 5 !



Un essai d'amateur (variante) avec sqlite (http://www.sqlite.org/), en
espérant que le formatage ne souffre pas trop:

*********

CREATE TABLE client(
clientID INTEGER PRIMARY KEY,
Nom,
Prenom
);
CREATE TABLE Rdv(
IDrdv INTEGER PRIMARY KEY,
clientID,
DateRdv
);
. mode column
. header on
INSERT INTO client(nom,prenom) VALUES ('dupont','jean');
INSERT INTO client(nom,prenom) VALUES ('durand','pierre');
INSERT INTO client(nom,prenom) VALUES ('doe','john');
INSERT INTO Rdv(clientID,DateRdv) VALUES ('1','20091227');
INSERT INTO Rdv(clientID,DateRdv) VALUES ('2','20091230');
INSERT INTO Rdv(clientID,DateRdv) VALUES ('1','20100520');
INSERT INTO Rdv(clientID,DateRdv) VALUES ('1','20091225');
INSERT INTO Rdv(clientID,DateRdv) VALUES ('1','20091105');
INSERT INTO Rdv(clientID,DateRdv) VALUES ('2','20091229');
INSERT INTO Rdv(clientID,DateRdv) VALUES ('3','20100205');

SELECT Nom, Prenom, max(DateRdv) as Date FROM Client JOIN Rdv USING
(clientID) GROUP BY Nom, Prenom ORDER BY MAX(DateRdv);

***************

@+
--
Yves
Publicité
Poster une réponse
Anonyme