2012-04-21 3 views
0

Я пытаюсь сделать функцию пейджинга с изображениями, он хорошо работает, когда я делаю заказ, как это:Исключить строки в SQL Server 2008 запрос

WHERE tblUploadedImages.ImageID NOT IN (
    SELECT TOP (@Exclude) ImageID FROM tblUploadedImages 
    ORDER BY tblUploadedImages.Added) 
    ORDER BY tblUploadedImages.Added 

Это работает. Но некоторые изображения не исключаются, когда я показываю изображения 11-20, когда я заказываю, сколько людей любит изображения.

ALTER PROCEDURE GetMostLikedImages 
    @Exclude INT 
AS 
    SELECT TOP (10) 
     (SELECT COUNT(DISTINCT UserID) 
      FROM tblLike 
      WHERE tblUploadedImages.ImageID = tblLike.ImageID) AS LikeCount, 
     (SELECT COUNT(ImageID) 
      FROM tblUploadedImages) AS ImageCount, 
     tblUploadedImages.ImgUrl,    
     tblUploadedImages.ImageID 
    FROM 
     tblUploadedImages 
    WHERE 
     tblUploadedImages.ImageID NOT IN 
      (SELECT TOP (@Exclude) 
       (SELECT COUNT(DISTINCT UserID) 
        FROM tblLike 
        WHERE tblUploadedImages.ImageID = tblLike.ImageID) AS LikeCount 
       ORDER BY LikeCount DESC, tblUploadedImages.Added) 
    ORDER BY 
     LikeCount DESC, tblUploadedImages.Added 

Кто-нибудь знает, как я могу заставить его работать, если я заказываю по LikeCount (сколько человек, который любит изображения)

+2

Почему вы не используете paginate с помощью CTE и ROW_NUMBER()? – cairnz

+0

Я думал, что будет проще ... – user1007103

+2

Спасибо, что решил мою проблему. Я обыскал и нашел какие-то тампельные коды. (http://sqlserverplanet.com/sql/pagination-using-rownumber) Я изменил свой запрос с помощью CTE и ROW_NUMBER(). Если вы напишете это как ответ, я проверю его. – user1007103

ответ

Смежные вопросы