Modérateur PHPfrance |
8758 Messages
12 juil. 2016, 11:01
salut,
a priori tu utilises mal le group by. vu que l'on a pas la clause select de la requête c'est une supposition.
group by s'utilise avec des fonctions de groupe (sum, max, avg etc.).
ce que tu souhaites c'est avoir les lignes de la table qui ont la dernier entrée pour chaque id_type_loisir. ne sachant pas comment savoir qu'elle est la dernière entrée (avec le create table cela aurait être plus simple

) je suis parti sur le plus grand id de la table pour chaque type en considérant que la pk était bien un auto increment et qu'il n'y a pas d'opération ésotérique sur dessus

(c'est basique mais l'exemple est la).
Il te faut donc réduire le jeux de résultat en deux fois (avec un subselect).
-- create table
CREATE TABLE `yo` (
id INT(11) NOT NULL AUTO_INCREMENT,
id_type_loisir` INT(11) NOT NULL,
id_loisirs INT(11) NOT NULL,
PRIMARY KEY (id)
);
Jeux de données
Code : Tout sélectionner
"id" "id_type_loisir" "id_loisirs"
"1" "1" "1"
"2" "1" "2"
"3" "1" "3"
"4" "2" "4"
"5" "2" "5"
"6" "3" "6"
"7" "3" "7"
"8" "3" "8"
"9" "3" "9"
"10" "4" "10"
"11" "4" "11"
La requête qui va bien
select id,id_type_loisir,id_loisirs from yo
where id in (select max(id) from yo group by id_type_loisir)
order by id_loisirs desc
Le résultat
Code : Tout sélectionner
"id" "id_type_loisir" "id_loisirs"
"11" "4" "11"
"9" "3" "9"
"5" "2" "5"
"3" "1" "3"
@+
Il en faut peu pour être heureux ......