Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
Stan
Bonjour,

je dispose de 2 tables :

Client:
- IDclient
- Nom
- Pr=E9nom

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

La cardinalit=E9 entre Client et Rdv est 0..n

Quelle est la requ=EAte qui me permettra d'afficher
la liste Nom,Prenom,date pour chaque client, tri=E9 sur le
champ date, avec la date la plus r=E9cente pour chaque rendez-vous
d'un client ?

Merci d'avance.

4 réponses

Avatar
Stan
Un petit oubli :
Sur MySql 5 !
Avatar
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 ?

select Nom, Prenom, max(date) from Client, Rdv where Client.clientID =
Rdv.client ID group by Nom, Prenom order by max(date)
Avatar
Stan
On 7 déc, 16:45, Alain Montfranc wrote:
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 ?
Avatar
yves
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