Requête mysql avec GROUP BY
9 messages
• Page 1 sur 1
-

julien__ - WRInaute occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
Requête mysql avec GROUP BY
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... ?
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

- Messages: 2687
- Inscription: 13 Fév 2004
Re: Requête mysql avec GROUP BY
Tu peux tenter quelque chose comme:
Mais je ne garantis pas que ça marche (et j'ai la flemme de tester, là).
Jacques.
- 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

- Messages: 362
- Inscription: 28 Déc 2006
Re: Requête mysql avec GROUP BY
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...
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

- Messages: 2687
- Inscription: 13 Fév 2004
Re: Requête mysql avec GROUP BY
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.
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

- Messages: 362
- Inscription: 28 Déc 2006
Re: Requête mysql avec GROUP BY
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...
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

- Messages: 2687
- Inscription: 13 Fév 2004
Re: Requête mysql avec GROUP BY
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.
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.
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Formulation d'un requête mysql : MAX, COUNT et GROUP BY
- Requete GROUP BY
- Optimisation requète - group by
- requête sql GROUP BY
- MySQL GROUP BY sur le dernier enregistrement
- [MySQL] Récupérer la première ligne d'un GROUP BY
- MySQL : SELECT spécial avec GROUP BY sur condition ?
- [mysql] trier les résultats d'une requête selon une table non liée à la requête
- Requete Mysql ?
- requete Mysql
- Du nouveau du côté des laboratoires de Google : Google Labs - 20-05-2002
- Accord entre Ask Jeeves et Google - 18-07-2002
- Google API : guide de développement de l'API Google - 20-09-2002
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Les différents systèmes de mise en cache des données - 16-08-2010
- Nombre moyen de mots par requête : statistiques AOL Août 2006 - 10-08-2006
- Google Calendar API - 20-04-2006
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
