J'utilise de la pagination pour mon site web et j'ai donc besoin de
faire des requ=EAtes sur des plage d'enregistrements, par exemple 1 =E0 1=E0=
puis 11 =E0 20, etc...
Malheureusement avedc la commande de SQL Server TOP je n'ai pas
d'offset poure sp=E9cifier le d=E9but et la fin.
Je recherche en fait l'=E9quivalent en MySQL LIMIT 1,x.
Quelqu'un a t'il une id=E9e lumineuse sur ce point ?
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles TOURREAU [MVP]
Le Fri, 11 Jan 2008 17:49:51 +0100, a écrit:
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
Le Fri, 11 Jan 2008 17:49:51 +0100, <skneife@gmail.com> a écrit:
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
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
"Gilles TOURREAU [MVP]" a écrit dans le message de > 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
"Gilles TOURREAU [MVP]" <gilles.tourreau@pos.fr> a écrit dans le message de
> 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.
"Gilles TOURREAU [MVP]" a écrit dans le message de > 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.