Voici un échantillon de mes données:Requête SQL avec "Group by" et "max" et "join"?
CLIENT_ATTRIBUT:
ID_CLIENT | DATE_CLIENT | ATTRIBUT
----------+-------------+---------
000000001 | 2010:03:01 | 0000010
----------+-------------+---------
000000001 | 2010:02:16 | 0000010
----------+-------------+---------
000000001 | 2010:03:04 | 0000011
----------+-------------+---------
000000002 | 2010:03:01 | 0001000
----------+-------------+---------
CLIENT:
ID_CLIENT | NOM_MARITAL |
----------+-------------+
000000001 | PANTROMANI |
----------+-------------+
000000002 | ELLOUQUIER |
----------+-------------+
J'aimerais obtenir, pour chaque ID_CLIENT dans la table "CLIENT_ATTRIBUT":
ID_CLIENT, max (DATE_CLIENT) avec son "ATTRIBUT" correspondant, et "NOM_MARITAL"
So in t il exemple ci-dessus:
ID_CLIENT | DATE_CLIENT | ATTRIBUT | NOM_MARITAL |
----------+-------------+----------+-------------+
000000001 | 2010:03:04 | 0000011 | PANTROMANI |
----------+-------------+----------+-------------+
000000002 | 2010:03:01 | 0001000 | ELLOUQUIER |
(je travaille avec Mysql, mais je suppose que cela ne devrait pas être différent avec tout système de base de données)
Odeur comme des devoirs et a été répondu sur ce site de nombreuses fois. – Select0r
Il est malheureux que ce soit MySQL, dans postgresql vous pourriez 'SELECT DISTINCT ON (id_client) date_client, attribut, non_marital FROM client_attribut JOIN client UTILISER (id_client) ORDER BY date_client DESC'. Ce serait massivement plus rapide et plus clair que la solution actuelle. –
Voir [cette question similaire] (http://stackoverflow.com/questions/2341659/problem-joining-tables-where-joined-table-needs-to-be-ordered-before-grouping) pour les réponses. –