[SQL] SELECT 1 ligne toute les x lignes

Résolu/Fermé
Digit@lChord
Messages postés
129
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
5 septembre 2012
- Modifié par Digit@lChord le 12/07/2012 à 20:00
brute
Messages postés
112
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
19 juillet 2012
- 13 juil. 2012 à 17:58
Bonjour,

Pour faire simple, j'aimerais que lorsque je fais un "SELECT * from table" sur une table contenant 90000 lignes, il me sélectionne UNE ligne TOUTE LES 450 lignes.
Ainsi je n'aurais pas 90000 résultat mais seulement 200.
C'est possible ?

Si oui, quelqu'un aurai il une piste ?

6 réponses

Bonjour

Si les ID sont consécutifs:
"SELECT * FROM matable WHERE id % 450=1"

S'ils ne sont pas consécutifs, on peut fabriquer un compteur (temporaire) qui joue le même rôle :
"SET @rownum:=0;" puis
"SELECT * FROM matable WHERE (@rownum:=@rownum+1) % 450=1"
4
Digit@lChord
Messages postés
129
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
5 septembre 2012
8
13 juil. 2012 à 14:47
Merci ça fonctionne parfaitement :-)
0
brute
Messages postés
112
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
19 juillet 2012
13
13 juil. 2012 à 17:58
voila... le père a été plus rapide :)
0
Digit@lChord
Messages postés
129
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
5 septembre 2012
8
12 juil. 2012 à 20:36
Up :-)
0
brute
Messages postés
112
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
19 juillet 2012
13
13 juil. 2012 à 12:03
oui c'est possible, il faut que tu récupères d'abord toutes tes lignes :
$req = mysql_query("SELECT * from table");"


ensuite que tu fasses une boucle :
n = 0;
while ($data = mysql_fetch_array($req))
{
     if (n == 450)
     {
          //tu la stockes ou tu veux
     }
n++;
}
0
Digit@lChord
Messages postés
129
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
5 septembre 2012
8
13 juil. 2012 à 14:08
"oui c'est possible, il faut que tu récupères d'abord toutes tes lignes :"

Bah oui c'est un peu le problème.
Si je fait un SELECT sur beaucoup de ligne, ça va pas être plus lent que si je faisais un SELECT sur quelques lignes ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
brute
Messages postés
112
Date d'inscription
samedi 8 mars 2008
Statut
Membre
Dernière intervention
19 juillet 2012
13
13 juil. 2012 à 14:18
dans ta base : chaque ligne a-t-elle un id ?
et ces id : sont-ils triés par ordre croissant ? (sont-ils a la suite : 1,2,3,4... et non 1,7, 90, 456...) ???
0
Digit@lChord
Messages postés
129
Date d'inscription
mardi 24 novembre 2009
Statut
Membre
Dernière intervention
5 septembre 2012
8
13 juil. 2012 à 14:30
Oui j'ai des ID, triés par ordre croissants 1,2,3,4,5,6,7,8,9...
La fonction modulo en sql pourrait elle être utile ?
0