[MYSQL] Un select dynamique plage par plage ?
Résolu
Linkinou
-
Linkinou -
Linkinou -
Bonjour à tous !
Après plusieurs recherches infructueuse je viens vers vous pour vous demandez s'il était possible de récupérer des lignes de ma table 20 par 20 sans pour autant connaitre les ID de ces lignes.
Je m'explique :
Il me faut parfois récupérer les 20 premières lignes mais parfois aussi les 20 lignes APRES les 20 premières où encore les 20 lignes après les 40 premières...etc
Il y t'il un moyen de faire ce traitement directement dans la requête ?
Parce que pour le moment l'idée que j'ai est de récupérer en amont le dernier ID de ma table pour pouvoir faire un calcul du genre :
SELECT * FROM table LIMIT (LASTID + 20), 20;
Avec LASTID l'id du tuple le plus récent.
Cette requête devrait me donner les 20 tuples à partir du 20éme tuple.
Ainsi me suffit de changer (LASTID + 20) par (LASTID + 40) pour la suite...etc
Je me demandais donc si je pouvais faire cette requête sans avoir à faire une autre requête pour récupérer ce LASTID en amont ?
J'ai pensé à mettre MAX(id) à la place de LASTID mais ca ne semble pas fonctionner.
Merci d'avance !
Après plusieurs recherches infructueuse je viens vers vous pour vous demandez s'il était possible de récupérer des lignes de ma table 20 par 20 sans pour autant connaitre les ID de ces lignes.
Je m'explique :
Il me faut parfois récupérer les 20 premières lignes mais parfois aussi les 20 lignes APRES les 20 premières où encore les 20 lignes après les 40 premières...etc
Il y t'il un moyen de faire ce traitement directement dans la requête ?
Parce que pour le moment l'idée que j'ai est de récupérer en amont le dernier ID de ma table pour pouvoir faire un calcul du genre :
SELECT * FROM table LIMIT (LASTID + 20), 20;
Avec LASTID l'id du tuple le plus récent.
Cette requête devrait me donner les 20 tuples à partir du 20éme tuple.
Ainsi me suffit de changer (LASTID + 20) par (LASTID + 40) pour la suite...etc
Je me demandais donc si je pouvais faire cette requête sans avoir à faire une autre requête pour récupérer ce LASTID en amont ?
J'ai pensé à mettre MAX(id) à la place de LASTID mais ca ne semble pas fonctionner.
Merci d'avance !
A voir également:
- [MYSQL] Un select dynamique plage par plage ?
- Tableau croisé dynamique - Guide
- Image de manchots sur une image de plage - Forum Musique / Radio / Clip
- Please select boot device ✓ - Forum BIOS
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Impossible d'afficher le rapport de tableau croisé dynamique sur un rapport existant ✓ - Forum Excel
1 réponse
Juste une remarque :
SELECT * FROM table LIMIT (LASTID + 20), 20;
Ca va être chaud de récupérer les 20 première lignes en partant de 20
Le mieux serait de faire :
SELECT * FROM table LIMIT (LASTID * 20), 20;
Après tout dépend du besoin, est-ce que c'est pour faire une PHP dynamique via Ajax? Des appels PHP tous simples?
SELECT * FROM table LIMIT (LASTID + 20), 20;
Ca va être chaud de récupérer les 20 première lignes en partant de 20
Le mieux serait de faire :
SELECT * FROM table LIMIT (LASTID * 20), 20;
Après tout dépend du besoin, est-ce que c'est pour faire une PHP dynamique via Ajax? Des appels PHP tous simples?
LIMIT 20, 20
me donne les 20 tuples après le 20éme.
Ce qui me convient parfaitement accompagné d'un ORDER BY.
Il me suffit de calculer en avance le premier parametre de LIMIT en le multipliant pour selectionner des tuples 20 par 20.
Merci !