Проблема с отслеживанием SQL-запросовC#

Место общения программистов C#
Anonymous
Проблема с отслеживанием SQL-запросов

Сообщение Anonymous »

Хорошо, вот моя проблема.

Пользователь может зайти на мой сайт и получить 8 записей одновременно, после чего ему/ей предоставляется возможность загрузить больше . Эти 8 записей можно отсортировать по параметру, переданному в процедуру. Теперь, когда я получаю эти 8 записей на внешнем интерфейсе, у меня есть их идентификаторы (хотя они, очевидно, скрыты от пользователя), но их идентификаторы не расположены в каком-либо определенном порядке, поскольку записи отсортированы по множеству возможных вещей.

Когда они нажмут «Загрузить больше», я смогу получить следующие 8 записей из базы данных, отсортированных ТЕМ ЖЕ способом, что и первые 8.

Например: «Дайте мне 8 лучших записей, отсортированных по возрасту». -> Нажмите «Загрузить еще» -> Дайте мне следующие 8 самых старых записей, не показывая мне те, которые я только что видел.

Как я могу вызвать процесс и убедиться, что ни одна из них не найдена? хотя первый набор результатов возвращается? Я хочу возвращать только 8 записей одновременно из соображений эффективности.

Код: Выделить всё

SELECT TOP 8
m.message,
m.votes,
(geography::Point(@latitude, @longitude, 4326).STDistance(m.point)) * 0.000621371192237334 as distance,
m.location,
datediff(hour,m.timestamp, getdate()) as age,
m.messageId,
ml.voted,
ml.flagged
FROM
tblMessages m
left join tblIPMessageLink ml on m.messageid = ml.messageid
WHERE
m.timestamp >= DATEADD(day, DATEDIFF(day, 0, @date), 0)
and
m.timestamp < DATEADD(day, DATEDIFF(day, 0, @date), 1)
ORDER BY
CASE WHEN @sort = 'votes1' THEN m.votes END DESC,
CASE WHEN @sort = 'votes2' THEN m.votes END ASC,
CASE WHEN @sort = 'age1' THEN datediff(hour,m.timestamp, getdate()) END ASC,
CASE WHEN @sort = 'age2' THEN datediff(hour,m.timestamp, getdate()) END DESC,
CASE WHEN @sort = 'distance1' THEN (geography::Point(@latitude, @longitude, 4326).STDistance(m.point)) * 0.000621371192237334 END ASC,
CASE WHEN @sort = 'distance2' THEN (geography::Point(@latitude, @longitude, 4326).STDistance(m.point)) * 0.000621371192237334 END DESC
END
Это мой текущий запрос. Как мне изменить его для работы с пейджингом?

Подробнее здесь: https://stackoverflow.com/questions/595 ... y-tracking

Вернуться в «C#»