Requête mysql avec GROUP BY


julien__
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 362
Inscription: 28 Déc 2006

Requête mysql avec GROUP BY

Message le Ven Sep 03, 2010 3:37

Bonsoir, je voudrais faire une requête sql qui me renvoie les 10 premiers enregistrements de chaque catégorie

select * from ma_table GROUP BY genre,sousgenre ORDER BY id DESC

avec ça, j'ai le premier enregistrement de chaque sousgenre, mais je voudrais avoir les 10 premiers... ?

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Requête mysql avec GROUP BY

Message le Ven Sep 03, 2010 13:44

Tu peux tenter quelque chose comme:

Code: Tout sélectionner
select * from table t1 where id in (select id from table t2 where (t2.genre,t2.sousgenre)=(t1.genre,t1.sousgenre) order by id desc limit 10) order by genre,sousgenre,id desc


Mais je ne garantis pas que ça marche (et j'ai la flemme de tester, là).

Jacques.


julien__
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 362
Inscription: 28 Déc 2006

Re: Requête mysql avec GROUP BY

Message le Ven Sep 03, 2010 23:11

Oups, j'ai qu'une seule table, dans ton exemple, il y a deux tables, t1 et t2?

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Requête mysql avec GROUP BY

Message le Sam Sep 04, 2010 0:03

Non, ce sont deux références à la même table "table", t1 et t2 ne sont que des alias.

Jacques.


julien__
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 362
Inscription: 28 Déc 2006

Re: Requête mysql avec GROUP BY

Message le Sam Sep 04, 2010 0:31

ok j'ai déjà vu ça une fois, mais j'ai des prob pour la syntaxe... les alias sont une notion que j'ignore, je sais que c'est pas bien d'avoir des besoins qui dépassent ses capacités... :) aide moi à progresser...

SELECT * FROM ma_table GROUP BY genre,scat

ma_table : c'est la table
genre : le genre
scat : le sousgenre

please!!! il me manque plus que ça pour mettre la nouvelle version de mon site ne ligne...

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Requête mysql avec GROUP BY

Message le Sam Sep 04, 2010 0:51

Ben "table" c'est ta table. t1 et t2 sont des alias, pas besoin de les modifier.

Quand tu fais une requête SQL, les tables peuvent avoir un alias, ce qui est particulièrement utile si tu fais référence plusieurs fois à la même table.

select * from table where table.toto=truc

est la même chose que:

select * from table aliasdematable where aliasdematable.toto=truc

Avec plusieurs fois la même table:

select * from table t1,table t2 where t1.champquelconque=t2.autrechampquelconque

Bref, l'alias par défaut d'une table est le nom de la table, mais tu peux choisir n'impore quel autre nom.

Il est temps d'aller lire la doc (version polie de RTFM).

Jacques.


julien__
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 362
Inscription: 28 Déc 2006

Re: Requête mysql avec GROUP BY

Message le Sam Sep 04, 2010 1:40

Je fais ça

select * from ma_table t1 where id in (select id from ma_table t2 where (t2.genre,t2.scat)=(t1.genre,t1.scat) order by id desc limit 10) order by genre,scat,id desc

et j'ai ça

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

désolé de te tenir la jambe...

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2687
Inscription: 13 Fév 2004

Re: Requête mysql avec GROUP BY

Message le Sam Sep 04, 2010 1:57

Les limites de mysql... (j'ai l'habitude de postgresql). Et ça, ça marche?

select * from ma_table t1 where id in (select id from (select id from ma_table t2 where (t2.genre,t2.scat)=(t1.genre,t1.scat) order by id desc limit 10) x) order by genre,scat,id desc

Jacques.


julien__
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 362
Inscription: 28 Déc 2006

Re: Requête mysql avec GROUP BY

Message le Sam Sep 04, 2010 2:03

#1054 - Unknown column 't1.genre' in 'where clause'

ça s'annonce pas bien...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité