Requete complexe

Résolu/Fermé
dna.factory Messages postés 24951 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 24 avril 2024 - 24 oct. 2014 à 09:00
dna.factory Messages postés 24951 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 24 avril 2024 - 24 oct. 2014 à 13:47
Bonjour,

J'aurais besoin d'aide pour réaliser une requête.
C'est pas tout ça fait la même chose, mais en gros, ça revient à trier les clients (par nom et pas par Id), en fonction de la date de leur dernière facture/commande
De part la valeur ajoutée de ce genre de requête (recherche de prospect, je suppose que c'est souvent réalisé, mais je bloque au départ...)

un peu d'architecture de la base :
On a la table client :
client
------
id(auto)
nom

et on a la table commande, en relation évidement 1,n (un client peut avoir plusieurs commandes, mais chaque commande a 1 et 1 seul client)
(par simplification, et dans mon cas, un client à obligatoirement une commande)

commande
-----
id(auto)
idclient (foreing)
date

et je veux donc récupérer la liste des clients (je peux avoir d'autres colonnes si obligatoire, je ferais un awk par la suite) dans l'ordre de leur derniere commande, du plus récent au plus ancien

Si un client à commandé plusieurs fois, il ne doit apparaitre qu'une seule fois.

je suppose qu'il y a du group et du having, mais j'avoue que là, je patauge complètement...

Cdt,

Ps : point bonus si la requete est lourde (oui, oui, vous avez bien lui, je dois aussi trouver une requête qui me permete de tester la réactivité de la base, donc j'ai besoin d'une requete un peu lourde).
Je sais qu'on est tous bénévole, mais c'est un peu de la prod, et idéalement j'en aurais besoin aujourd'hui


Par contre, c'est pas vital non plus, je pourrais me débrouiller autrement si j'ai pas de réponse (et je suis de toute façon interessé pour la prochaine fois).




1 réponse

benol3 Messages postés 569 Date d'inscription lundi 29 juillet 2013 Statut Membre Dernière intervention 7 mai 2015 87
24 oct. 2014 à 12:11
Salut,

A tester :

SELECT nom, max(commande.date)
FROM client, commande
WHERE client.idclient = commande.idclient
GROUP BY nom
ORDER BY max(commande.date) desc
1
dna.factory Messages postés 24951 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 24 avril 2024 1 609
24 oct. 2014 à 13:47
Ca a l'air de faire ce que j'ai demandé...
Reste à savoir si j'ai demandé ce que je voulais :)

Merci beaucoup.
0