Bonjour,
J'ai du mal à faire une requête de groupement entre plusieurs tables. Je vous simplifie donc ici mon problème à l'extrême pour se concentrer sur le coeur de ce que je n'arrive pas à faire.
Imaginons que j'ai une table client et une table commande.
Table Client
Table Commandes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 +-------------+----------------+ | ClientID | Nom | +-------------+----------------+ | 01 | Martin | | 02 | Bertrand | +-------------+----------------+
Comme vous l'aurez peut-être remarqué, j'ai volontairement mis des dates de commandes croissantes pour l'un et décroissantes pour l'autre. Bien entendu, les ID des tables sont toujours croissants, eux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 +------------+-----------------+--------------+ | CommandeID | DateCommande | CmdClientID | +------------+-----------------+--------------+ | 01 | 2 janvier 2020 | 01 | | 02 | 15 décembre 2019| 02 | | 03 | 20 décembre 2019| 01 | | 04 | 12 janvier 2020 | 02 | +------------+-----------------+--------------+
Je souhaite obtenir les détails de la dernière commande passée par chaque client, donc les données suivantes :
Je n'ai jamais vraiment bien compris les groupements en SQL. J'imagine que ça ne doit pas être très compliqué mais je n'y arrive pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 +-------------+----------------+------------+-----------------+--------------+ | ClientID | Nom | CommandeID | DateCommande | CmdClientID | +-------------+----------------+------------+-----------------+--------------+ | 01 | Martin | 01 | 2 janvier 2020 | 01 | | 02 | Bertrand | 04 | 12 janvier 2020 | 02 | +-------------+----------------+------------+-----------------+--------------+
En écrivant ça, SQL me dit que je doit mettre des fonctions d'agregat dans les champs que je sélectionne mais je ne sais pas quoi mettre. Sur la date de la commande, je mettrai bien "MAX" mais pour les autres champs de la table commande, je ne vois pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT ClientID , Nom , CommandeID , DateCommande , CmdClientID FROM Client INNER JOIN Commandes ON CmdClientID = ClientID GROUP BY ClientID
Sauriez-vous m'aider svp ?
Merci.
Partager