OVH Cloud OVH Cloud

limiter les enregistrements

2 réponses
Avatar
max
Bonjour a tous,
voila, je cree une page internet qui ne dois afficher que 5 enregistrements,
et lors de l'appuis sur un bouton suivant, cette meme page dois afficher les
5 suivants.
En fouillant sur le net, j'ai trouver une requette qui permet de le faire
select * from MaTable order by macolonne limit 0,5.
Mon probleme, c'est qu'apparement, le mot cle limit ne fonctionne que sous
mysql, hors moi j'utilise sql.
Quelqu'un connaitrait'il une equivalence, je ne souhaiterai pas etre
obliger d'utiliser un curseur.
Merci d'avance.
MAX.

2 réponses

Avatar
TedIF
max a exposé le 26/08/2005 :
voila, je cree une page internet qui ne dois afficher que 5 enregistrements,
et lors de l'appuis sur un bouton suivant, cette meme page dois afficher les
5 suivants.



select top 5 * from MATABLE

--

Dominique
Avatar
Philippe T [MS]
Bonjour,

Voici une procédure stockée qui permet de le faire. Pour accéder aux
enregistrements de 10 à 15, vous utilisez @RangeMin  et @RangeMax = 15
par exemple.

<<
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<StoredProcedure name="tp_GetSqlRange">

<Object> Allow you to get data from a specific range number to a specific
range number </Object>

<History Author = "Philippe TROTIN - " Date =
"06/02/2004"> </History>

</StoredProcedure>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
CREATE PROCEDURE tp_GetSqlRange
(
@SQL_Table nvarchar(4000), -- Exemple : SELECT * FROM Zip
@TableKey nvarchar(400), -- ZIP_ID
@RangeMin int, -- 5
@RangeMax int, -- 10
@GetTotalCount int = 1
)
AS
BEGIN
SET NOCOUNT ON

DECLARE @SQLString nvarchar(4000)
DECLARE @Count int
DECLARE @ParmDefinition nvarchar(500)
DECLARE @MaxTotalCount int
DECLARE @RangeInversion int
DECLARE @NumberOfRows int

DECLARE @ID_MIN nvarchar(400)

-- Ensure that @RangeMin is fewer than @RangeMax
IF @RangeMin >= @RangeMax
BEGIN
SET @RangeInversion = @RangeMin
SET @RangeMin = @RangeMax
SET @RangeMax = @RangeInversion
END

SET @NumberOfRows = @RangeMax - @RangeMin + 1

-- Get total number of rows (not range dependant)
IF @GetTotalCount = 1
BEGIN
SET @SQLString = 'SELECT @MaxTotalCount = count(*) FROM (' + @SQL_Table +
') req'
SET @ParmDefinition = '@MaxTotalCount int OUTPUT'
EXECUTE sp_executesql @SQLString, @ParmDefinition, @MaxTotalCount OUTPUT
END

-- Get ranges
SET @SQLString = 'SELECT @ID_MIN = ISNULL(z.' + @TableKey + ', '''') FROM
(SELECT TOP ' + CONVERT(nvarchar, @RangeMin) + ' req.' + @TableKey + ' FROM
(' + @SQL_Table + ') req ORDER BY req.' + @TableKey + ') z'
SET @ParmDefinition = '@ID_MIN nvarchar(200) OUTPUT'
EXECUTE sp_executesql @SQLString, @ParmDefinition, @ID_MIN OUTPUT

-- Get data
IF @ID_MIN = ''
BEGIN
SET @SQLString = 'SELECT TOP ' + CONVERT(nvarchar, @NumberOfRows) + ' *
FROM (' + @SQL_Table + ') req ORDER BY req.' + @TableKey
END
ELSE
BEGIN
SET @SQLString = 'SELECT TOP ' + CONVERT(nvarchar, @NumberOfRows) + ' *
FROM (' + @SQL_Table + ') req WHERE req.' + @TableKey + ' >= @ID_MIN ORDER
BY req.' + @TableKey
END

SET @ParmDefinition = '@ID_MIN nvarchar(200)'
EXECUTE sp_executesql @SQLString, @ParmDefinition, @ID_MIN

-- Print the total number of rows
IF @GetTotalCount = 1
BEGIN
SELECT @MaxTotalCount AS TotalNumberOfRows
END
END
GO







----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"max" wrote in message
news:OBqWl$
Bonjour a tous,
voila, je cree une page internet qui ne dois afficher que 5
enregistrements,
et lors de l'appuis sur un bouton suivant, cette meme page dois afficher
les 5 suivants.
En fouillant sur le net, j'ai trouver une requette qui permet de le faire
select * from MaTable order by macolonne limit 0,5.
Mon probleme, c'est qu'apparement, le mot cle limit ne fonctionne que sous
mysql, hors moi j'utilise sql.
Quelqu'un connaitrait'il une equivalence, je ne souhaiterai pas etre
obliger d'utiliser un curseur.
Merci d'avance.
MAX.