Postgresql : compte du nombre de resultat si pas de LIMIT (how to?)

Postgresql : compte du nombre de resultat si pas de LIMIT (how to?) - SQL/NoSQL - Programmation

Marsh Posté le 20-03-2005 à 18:27:50    

Bonjour,
 
en fait j'affiche sur une page une liste de clients a partir d'une base de données. Il est évident que si on a 1000 clients on va pas tous les afficher sur la meme page, et donc je dois creer des pages. Jusque la pas de problème.
 
Le fait est que si je fait un LIMIT, dans la requete SQL a partir du resultat de cette requete je ne peux plus savoir combien de clients il y aura au total et donc je ne peux plus calculer le nombre de page qu'il y aura c'est logique :D. Mais le probleme dans l'histoire c'est que pour afficher ces client et d'autres infos sur eux, je vais puiser dans une grosse vue sur d'inombrables tables avec pleins de jointures :D donc j'ai pas trop envie d'interroger 2 fois la vue une fois avec limit pour afficher et une fois sans pour compter le nombre total.
 
J'ai bien pensé limiter l'affichage des client uniquement via php, et donc sans LIMIT dans la requete, mais prenons l'exemple qu'il y a 50000 client dans la base de données, ca va être super lourd et gourmand niveau ressource (mémoire ram surtout).
 
Donc ma question est, avez vous une solution facile a ce probleme?
 
Ya pas moyen a partir du resultat del a requete de connaitre combien de client y aurait si il n'y avait pas eu de LIMIT ?  
 
Une idée ?  
 
Merci :)


Message édité par Gat$ le 20-03-2005 à 19:47:41
Reply

Marsh Posté le 20-03-2005 à 18:27:50   

Reply

Marsh Posté le 20-03-2005 à 18:33:57    

Quelle version de mySql ?
 
"SQL_CALC_FOUND_ROWS (available in MySQL 4.0.0 and up) tells MySQL to calculate how many rows there would be in the result set, disregarding any LIMIT clause. The number of rows can then be retrieved with SELECT FOUND_ROWS(). See Section 12.8.3, “Information Functions”.  
 
Before MySQL 4.1.0, this option does not work with LIMIT 0, which is optimized to return instantly (resulting in a row count of 0). See Section 7.2.12, “How MySQL Optimizes LIMIT”."
 
http://dev.mysql.com/doc/mysql/en/select.html

Reply

Marsh Posté le 20-03-2005 à 18:35:40    

- Tu met un champ nb_clients quelque part.
- Tu fais un count avant...
- ...
 
:heink:


---------------
[:whatde]
Reply

Marsh Posté le 20-03-2005 à 18:36:40    

WhatDe a écrit :

- Tu met un champ nb_clients quelque part.
- Tu fais un count avant...
- ...
 
:heink:


 
S'il pose la question, c'est qu'à mon avis il fait une requête avec pas mal de filtres, et pas simplement un "SELECT * FROM clients;".

Reply

Marsh Posté le 20-03-2005 à 18:38:28    

Oops j'ai oublié de preciser, je travaille avec Postgresql 8.0 :)
 
mais a mon avis si ya ca dans mysql y aura dans postgres, je vais aller chercher de ce coté la merci Beegee! ;)


Message édité par Gat$ le 20-03-2005 à 18:39:33
Reply

Marsh Posté le 20-03-2005 à 18:40:15    

Beegee a écrit :

S'il pose la question, c'est qu'à mon avis il fait une requête avec pas mal de filtres, et pas simplement un "SELECT * FROM clients;".


 
Vi c'est une grosse requete sinon j'aurais pas posé la question :)

Reply

Marsh Posté le 20-03-2005 à 19:46:55    

Bon ben j'trouve pas trop de solution :(
J'vais changer le titre au cas ou...

Reply

Sujets relatifs:

Leave a Replay

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