Pagination sans LIMIT

Pagination sans LIMIT - SQL/NoSQL - Programmation

Marsh Posté le 10-09-2009 à 10:12:34    

Bonjour,
je travaille actuellement sous PostGreSQL et je cherche à afficher une table de produits ayant, pour simplifier, cette structure :
 
|      id_produit      |      nom         |        version        |
 
Comme vous pouvez le voir, les produits et leurs versions ne sont pas séparés. Cependant, je voudrais pouvoir afficher toutes les versions sur plusieurs pages, sans séparer les différentes versions d'un produit sur plusieurs pages.
 
Voici le type de requête que je fais actuellement, mais qui ne marche pas vraiment (affiche certaines pages vides, difficile d'y rajouter des conditions):
 
SELECT * FROM Produit pr WHERE  
     (SELECT COUNT(*)+COUNT(DISTINCT nom) FROM produit  
      WHERE nom <= pr.nom
     ) <= $1
 AND
     (SELECT COUNT(*)+COUNT(DISTINCT nom) FROM produit  
       WHERE nom <= pr.nom
     ) > $2
 AND
     <conditions>
;
 
Où $1 est la limite + l'offset, et $2 l'offset.
 
En le réécrivant comme ça je me demande comment ça peut faire un tant soit peu ce que je veux, mais bon, si ça peut vous aider à voir ce que je veux...
 
Je vous remercie d'avance de vos propositions.

Reply

Marsh Posté le 10-09-2009 à 10:12:34   

Reply

Marsh Posté le 10-09-2009 à 13:18:09    

avec du sql pure, je doute que t'arrive à tes fins (ou alors, en concaténant sur une seule ligne toutes les version d'un produit). Peut-être avec une procédure stockée ou un script (php, par ex), ça le ferait plus facilement...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 10-09-2009 à 14:31:40    

Hum ça implique de récupérer toute la table à chaque page du coup, si je ne dis pas de bêtise. Après tout c'est vrai qu'elle n'est pas sensé être très grande, donc ça ne pose pas obligatoirement de problème.
Edit : je parle dans le cas de php, et je viens de me dire qu'on peut sinon récupérer toutes les versions d'un produit tant que la limite n'est pas excédée sinon, à voir.
Merci pour ton aide en tout cas, et si quelqu'un a une super requête à proposer je suis quand même preneur :)


Message édité par Aaron GOUZIT le 10-09-2009 à 14:37:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed