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.
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
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
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.
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
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> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ 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.
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>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
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" <m.hoarau@eagletelecom.fr> wrote in message
news:OBqWl$kqFHA.364@TK2MSFTNGP11.phx.gbl...
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.
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> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ 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.