Tu dois pouvoir faire le group by d'abord en utilisant une jointure :
SELECT T1.* FROM annonces T1
INNER JOIN (SELECT region,MAX(date_depot) as maxdate FROM annonces GROUP BY region) T2
ON T1.region=T2.region AND T1.date_depot=T2.maxdate
J'aurais proposé la même chose que Philodick, une sous-requête.
Attention cette solution implique que pour une même région il n'y ait pas deux annonces à la même dates maxi ... C'est peut-être un problème ...
Si c'est le cas, il faut trouver un autre critère de tri, par exemple l'ID de l'annonce si il est bien chronologique, c'est à dire que l'on ne peut pas créer une annonce avec un ID 2 et une date inférieure à l'annonce ID 1 ...
La requête serait :
SELECT T1.*
FROM
annonces T1
INNER JOIN (
SELECT region, MAX(ID) as maxid
FROM annonces
GROUP BY region
) T2
ON T1.region = T2.region
AND T1.ID = T2.maxid
Si il est possible d'avoir plusieurs annonces le même jour pour une même région, perso je préfèrerais avoir une colonne de type DATETIME dans un soucis de cohérence.
je préfèrerais avoir une colonne de type DATETIME dans un soucis de cohérence.
Le risque serait réduit à "presque" zéro mais existerait toujours ... Le seul moyen c'est d'utiliser une clé primaire (ici ID) ou une contrainte d'unicité (ici sur region+date).
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.