MySql LIMIT 1, 10 versus SQL Server

Le
skneife
J'utilise de la pagination pour mon site web et j'ai donc besoin de
faire des requêtes sur des plage d'enregistrements, par exemple 1 à 1à=

puis 11 à 20, etc
Malheureusement avedc la commande de SQL Server TOP je n'ai pas
d'offset poure spécifier le début et la fin.
Je recherche en fait l'équivalent en MySQL LIMIT 1,x.

Quelqu'un a t'il une idée lumineuse sur ce point ?
Merci.

Sam
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU [MVP]
Le #12163641
Le Fri, 11 Jan 2008 17:49:51 +0100,
J'utilise de la pagination pour mon site web et j'ai donc besoin de
faire des requêtes sur des plage d'enregistrements, par exemple 1 à 1à
puis 11 à 20, etc...
Malheureusement avedc la commande de SQL Server TOP je n'ai pas
d'offset poure spécifier le début et la fin.
Je recherche en fait l'équivalent en MySQL LIMIT 1,x.

Quelqu'un a t'il une idée lumineuse sur ce point ?
Merci.

Sam



Bonjour,

Il est possible de faire la pagination avec TOP mais sous SQL Server 2005
il existe une fonction ROW_NUMBER() qui permet de numéroter les n°
d'enregistrements retournés.
Extrait d'un article de Frédéric BROUARD :
http://sqlpro.developpez.com/SQL_Server_2K5/N1.php

***********

1) Pagination par bloc de ligne controlé (les lignes retournées sont
controlées dans le filtre WHERE) :
SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY USR_ID) RNUM,
USR_ID, USR_NOM, USR_PRENOM,
FROM T_UTILISATEUR_USR) T
WHERE RNUM BETWEEN 10 AND 19
Ici on retourne les lignes numérotées 10 à 19.

2) Pagination par nombre de page (le nombre de page est fixé, le nombre de
ligne inconnu, la page retournée est contrôlée dans le filtre WHERE) :
SELECT *
FROM (SELECT NTILE(25) OVER(ORDER BY USR_ID) NTL,
USR_ID, USR_NOM, USR_PRENOM,
FROM T_UTILISATEUR_USR) T
WHERE NTL = 7
Ici on fixe le nombre de page à 25 et l'on retourne la page 7

***********

Cordialement

--
Gilles TOURREAU - MVP C#


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
sam
Le #12163611
"Gilles TOURREAU [MVP]" > Il est possible de faire la pagination avec TOP mais sous SQL Server 2005
il existe une fonction ROW_NUMBER() qui permet de numéroter les n°
d'enregistrements retournés.
Extrait d'un article de Frédéric BROUARD :
http://sqlpro.developpez.com/SQL_Server_2K5/N1.php



Merci beaucoup pour tous les exemples qui répondent correctement à ma
demande.

Sam
Publicité
Poster une réponse
Anonyme