OVH Cloud OVH Cloud

Requete SQL

3 réponses
Avatar
julieD
Bonjour,

D=E9sol=E9 de vous importuner mais j'ai un probl=E8me de requ=EAte depuis
quelques temps que j'ai du mal =E0 r=E9soudre.

Merci de me consacrer quelques temps s'il vous pla=EEt.

J'ai une liste de clients qui poss=E8dent plusieurs commandes.

Liste des clients CLIENT
-- IDCLIENT -- Nom -- Pr=E9nom
500 Marc Dupont
501 Luc Desjardins
502 Franck Jordan


Liste des commandes des clients COMMANDES
-- IDCLIENT -- IDCommande -- Qt=E9 -- D=E9signation
500 -- 1 10 Chaises
500 -- 2 -- 2 Tables
501 -- 1 -- 1 Tabouret
502 -- 1 -- 1 Cuisini=E8re
502 -- 2 -- 1 chaise


Requ=EAte 1 : Toutes les commandes de mon client 500
SELECT * FROM CLIENT, COMMANDES WHERE CLIENT.IDCLIENT =3D
COMMANDES.IDCLIENT AND CLIENT.IDCLIENT =3D 500

Requ=EAte 2 : La derni=E8re commande de mon client 500
SELECT MAX(COMMANDES.IDCommande) FROM CLIENT, COMMANDES WHERE
CLIENT.IDCLIENT =3D COMMANDES.IDCLIENT AND CLIENT.IDCLIENT =3D 500

Comment liste la derni=E8re commande de tous mes clients
J'ai essay=E9 la Requ=EAte 3 :
SELECT MAX(COMMANDES.IDCommande) FROM CLIENT, COMMANDES WHERE
CLIENT.IDCLIENT =3D COMMANDES.IDCLIENT

mais elle ne fonctionne pas

3 réponses

Avatar
Philippe T [MS]
Bonjour,

La requete suivante te donne l'id de la dernière commande :

SELECT DISTINCT IDCLIENT, MAX(IDCommande) FROM COMMANDES

La requete suivante est complète :

SELECT *
FROM CLIENT cli
INNER JOIN COMMANDES com ON cli.IDCLIENT = com.IDCLIENT
INNER JOIN (SELECT DISTINCT IDCLIENT, MAX(IDCommande) AS MaxCom FROM
COMMANDES) tmp ON com.IDCLIENT = tmp.IDCLIENT AND com.IDCommande =
tmp.MaxCom


Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"julieD" wrote in message
news:
Bonjour,

Désolé de vous importuner mais j'ai un problème de requête depuis
quelques temps que j'ai du mal à résoudre.

Merci de me consacrer quelques temps s'il vous plaît.

J'ai une liste de clients qui possèdent plusieurs commandes.

Liste des clients CLIENT
-- IDCLIENT -- Nom -- Prénom
500 Marc Dupont
501 Luc Desjardins
502 Franck Jordan


Liste des commandes des clients COMMANDES
-- IDCLIENT -- IDCommande -- Qté -- Désignation
500 -- 1 10 Chaises
500 -- 2 -- 2 Tables
501 -- 1 -- 1 Tabouret
502 -- 1 -- 1 Cuisinière
502 -- 2 -- 1 chaise


Requête 1 : Toutes les commandes de mon client 500
SELECT * FROM CLIENT, COMMANDES WHERE CLIENT.IDCLIENT COMMANDES.IDCLIENT AND CLIENT.IDCLIENT = 500

Requête 2 : La dernière commande de mon client 500
SELECT MAX(COMMANDES.IDCommande) FROM CLIENT, COMMANDES WHERE
CLIENT.IDCLIENT = COMMANDES.IDCLIENT AND CLIENT.IDCLIENT = 500

Comment liste la dernière commande de tous mes clients
J'ai essayé la Requête 3 :
SELECT MAX(COMMANDES.IDCommande) FROM CLIENT, COMMANDES WHERE
CLIENT.IDCLIENT = COMMANDES.IDCLIENT

mais elle ne fonctionne pas
Avatar
julieD
Une fois exécutée j'ai l'erreur suivante :
La colonne 'COMMANDES.IDCLIENT' est incorrecte dans la liste de
sélection parce qu'elle n'est pas contenue dans une fonction
d'agrégation et qu'il n'y a pas de clause GROUP BY.
Avatar
Carole
Bonjour
Si tu veux en résultat ID du client, dernier n° de commande, essaie la
requête suivante :

select idclient, max(IdCommande) from Commandes group by IdClient

"julieD" a écrit dans le message de news:

Bonjour,

Désolé de vous importuner mais j'ai un problème de requête depuis
quelques temps que j'ai du mal à résoudre.

Merci de me consacrer quelques temps s'il vous plaît.

J'ai une liste de clients qui possèdent plusieurs commandes.

Liste des clients CLIENT
-- IDCLIENT -- Nom -- Prénom
500 Marc Dupont
501 Luc Desjardins
502 Franck Jordan


Liste des commandes des clients COMMANDES
-- IDCLIENT -- IDCommande -- Qté -- Désignation
500 -- 1 10 Chaises
500 -- 2 -- 2 Tables
501 -- 1 -- 1 Tabouret
502 -- 1 -- 1 Cuisinière
502 -- 2 -- 1 chaise


Requête 1 : Toutes les commandes de mon client 500
SELECT * FROM CLIENT, COMMANDES WHERE CLIENT.IDCLIENT COMMANDES.IDCLIENT AND CLIENT.IDCLIENT = 500

Requête 2 : La dernière commande de mon client 500
SELECT MAX(COMMANDES.IDCommande) FROM CLIENT, COMMANDES WHERE
CLIENT.IDCLIENT = COMMANDES.IDCLIENT AND CLIENT.IDCLIENT = 500

Comment liste la dernière commande de tous mes clients
J'ai essayé la Requête 3 :
SELECT MAX(COMMANDES.IDCommande) FROM CLIENT, COMMANDES WHERE
CLIENT.IDCLIENT = COMMANDES.IDCLIENT

mais elle ne fonctionne pas