J'essaye de faire une pagination de base dans MSSQL. Le problème que j'ai est que je suis en train de trier la pagination sur une ligne qui (potentiellement) a des valeurs similaires, et la clause ORDER BY renvoie des résultats "aléatoires", ce qui ne fonctionne pas bien.MSSQL Paging retourne des lignes aléatoires lorsqu'il n'est pas supposé trop
Par exemple. Si j'ai trois lignes, et que je les classe par "classement", et que toutes les évaluations sont = '5' - les rangées se commanderont elles-mêmes "aléatoirement". Comment puis-je faire en sorte que les lignes apparaissent dans le même ordre à chaque fois?
J'ai essayé de le trier par date et heure que le champ a été modifié pour la dernière fois, mais le "classement" est trié en sens inverse, et encore une fois, ne fonctionne pas comme prévu.
Voici le SQL que j'utilise jusqu'à maintenant. Je sais que c'est un peu confus sans les données, donc toute aide serait utile.
SELECT * FROM
(
SELECT
CAST(grg.defaultthumbid AS VARCHAR) + '_' +
CAST(grg.garageid AS VARCHAR) AS imagename,
(
SELECT COUNT(imageid)
FROM dbo.images im (nolock)
WHERE im.garageid = grg.garageid
) AS piccount,
(
SELECT COUNT(commentid)
FROM dbo.comments cmt (nolock)
WHERE cmt.garageid = grg.garageid
) AS commentcount,
grg.GarageID, mk.make, mdl.model, grg.year,
typ.type, usr.username, grg.content,
grg.rating, grg.DateEdit as DateEdit,
ROW_NUMBER() OVER (ORDER BY Rating DESC) As RowIndex
FROM
dbo.garage grg (nolock)
LEFT JOIN dbo.users (nolock) AS usr ON (grg.userid = usr.userid)
LEFT JOIN dbo.make (nolock) AS mk ON (grg.makeid = mk.makeid)
LEFT JOIN dbo.type (nolock) AS typ ON (typ.typeid = mk.typeid)
LEFT JOIN dbo.model (nolock) AS mdl ON (grg.modelid = mdl.modelid)
WHERE
typ.type = 'Automobile' AND
grg.defaultthumbid != 0 AND
usr.username IS NOT NULL
) As QueryResults
WHERE
RowIndex BETWEEN (2 - 1) * 25 + 2 AND 2 * 25
ORDER BY
DateEdit DESC
Et aussi, je ne sais pas why..if je prends le « grg.content » de la sélection, il semble fonctionner comme je le veux aussi .. – footose