Page 1 sur 1

limit et offset

Posté : 11 mai 2005, 08:50
par donny
salut,

Je suis allez à cette adresse
http://traduc.postgresqlfr.org/pgsql-fr ... limit.html
et j ai pas trop compris le principe du limit et offset ?

merci

Posté : 11 mai 2005, 09:59
par cerber
Quand une requête retourne un grand nombre d'enregistrement et qu'on ne peux tous les traiter à la fois, on utilise limit et offset.
Par exemple, dans une appli qui affiche à l'écran la totalité des données d'une table, seules les données à l'écran sont exploitables, ca ne sert à rien de récupérer 10 000 lignes si tu peux en afficher que 20 non ?
Limit permet de limiter le nombre d'enregistremùent retournés, LIMIT 20 dans mon exemple.
Offset permet de se déplacer dans tes enregistrements :
LIMIT 20 OFFSET 0 => tu prend les 20 premiers enregistrements
LIMIT 20 OFFSET 20 => tu prend les enregistrement 20 à 40
LIMIT 20 OFFSET 103 => tu prend les enregistrements 103 à 123
...
...

tu as compris ?

en mysql le mot clé OFFSET n'existe pas, on se contente de faire précéder la limitation de l'offset suivit d'une ','
LIMIT [offset,] lignes
expl LIMIT 103,20

Posté : 11 mai 2005, 14:23
par donny
donc limit 5 offset 10: je peux les enregistrement de 10 à 15
limit 100 offset 0 :je prends les 100 premier enregistrement
c est cela

Posté : 11 mai 2005, 15:24
par albat
T'as tout pigé ! ;)

Posté : 12 mai 2005, 08:15
par donny
Quand je fais cette requete cela veux dire :
SELECT * FROM livre LIMIT 1  OFFSET  $id; 
si $id=0, je prends le 1er enregistrement
si $id=1,je prends les enregistrement de 1 à 2 donc le 2eme enregistrement
si $id=2, je prends le 3eme enregistrement et ainsi de suite.....


??

Posté : 12 mai 2005, 11:13
par albat
En toute logique, c'est ça.
Il te suffit de tester pour le vérifier.

Il faut toujours tester ! ;)

Posté : 12 mai 2005, 11:19
par donny
c est puissant alors ce truc

Posté : 16 mai 2005, 10:48
par cerber
bah sur le coup du limit 1 y'a peut être d'autres moyens de le faire ;)

Mais quand il s'agit d'afficher petit a petit un grand nombre d'enregistrements, ca permet d'éviter de ramener tes 1000 lignes pour n'en afficher que 30 à la fois