Пользователь может зайти на мой сайт и получить 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