2011-06-13 4 views
1

J'ai construit un curseur en utilisant AJAX pour les résultats, et j'ai un petit problème comme suit:MYSQL - LIMIT dans une gamme

en supposant une table avec un ensemble de 1 to 15 lignes, mais, je travaille uniquement avec les 9 premiers rangs; dans un 1er étage i (SELECT * FROM table ORDER BY id DESC LIMIT 9) et utiliser les résultats pour construire la navigation et pour afficher le premier groupe.

Puis dans une 2ème étape je suis 9 articles theese interrogation, 3 à chaque fois de gauche donc je (SELECT * FROM table WHERE id > '$1' ORDER BY id DESC LIMIT 3) ou droit donc je (SELECT * FROM table WHERE id < '$1' ORDER BY id DESC LIMIT 3)$1 est le dernier élément de chaque groupe afin de (13 || 11 || 7)(15, 14, 13) || (12, 11, 10) || (9, 8, 7).

Eh bien, immagine d'avoir une représentation des explications ci-dessus verbeux comme ci-dessous:

<- [ 15 - 14 - 13 - 12 - 11 - 10 - 9 - 8 - 7 ] -> 
    [ 15  ] [ 14  ] [ 13  ] 

Ok, le problème est lorsque le « droit requête » atteindre le last item: 7, les résultats ensemble est (6, 5, 4) que évidemment est correct mais n'est pas dans notre gamme de 15 à 7, au lieu de mon but, il ne devrait rien retourner. comment je peux le faire avec une requête SQL?


juste pour l'amour est ici le curseur demo (dernier élément à droite, en utilisant la flèche droite, est hors de portée); espérons qu'il n'est pas question trop floue parce que j'ai eu du mal à comprendre comment expliquer le problème. ;)

Répondre

1

Dans la première étape, vous pouvez enregistrer l'ID minimal dans les lignes renvoyées. Ensuite, dans vos autres requêtes, il suffit d'ajouter une condition WHERE pour vous assurer que les ids sélectionnés sont supérieurs ou égal à celui dans le cas minimum, par exemple

SELECT * FROM table WHERE id <'$1' AND id >='$min' ORDER BY id DESC LIMIT 3 

où votre identifiant minimum est de 7 et la requête « droit » est fait avec la valeur 7, il ne retournera rien. Si je comprends bien votre question, c'est le comportement que vous voulez.

+0

hey Dan, je ne pouvais pas imaginer une solution plus simple, merci pour l'effort! ;) –