Je bosse avec une base oracle et je cherche la meilleure solution pour gérer une pagination comme on peut le faire sous MySql avec la commande LIMIT.
J'ai essayé d'utiliser le rownum, mais celui-ci n'est pas réattribué si l'on change le ORDER BY. Du coup il faut intégrer la requête dans un SELECT pour avoir le bon rownum. Mais autre problème, impossible de spécifier dans le WHERE un rownum supérieur à 0 (il ne trouve plus aucun élément). Obligé une fois encore d'ajouter un select autour du tout.
Ma requête ressemble donc à un truc du genre :
Code : Tout sélectionner
SELECT * FROM (
SELECT rownum AS num, x.* FROM (
SELECT * FROM table ORDER BY champ
) x
)
WHERE num > 10 AND num <= 20Ma question est donc de savoir s'il existe une solution plus optimisée, en sql ou en php sans avoir à ramener des milliers d'enregistrements pour n'en afficher que 10 ?
Toutes idées ou suggestions sont les bienvenues