loading..
Русский    English
05:34
листать

Постраничная разбивка записей (пейджинг) стр. 3

Хранимая процедура, о которой говорилось выше, может выглядеть так:

  1. CREATE PROCEDURE paging
  2. @n int -- число записей на страницу
  3. , @p int =1 -- номер страницы, по умолчанию - первая
  4. AS
  5. SELECT * FROM
  6.  (SELECT *,
  7.    CASE WHEN num % @n = 0 THEN num/@n ELSE num/@n + 1 END AS page_num,
  8.    CASE WHEN total % @n = 0 THEN total/@n ELSE total/@n + 1 END AS num_of_pages
  9.   FROM
  10.   (SELECT *,
  11.          ROW_NUMBER() OVER(ORDER BY price DESC) AS num,
  12.          COUNT(*) OVER() AS total FROM Laptop
  13.   ) X
  14.  ) Y
  15. WHERE page_num = @p;
  16. GO

Таким образом, если нам нужно получить вторую страницу при условии размещения 2-х записей на странице, достаточно написать

  1. exec paging @n=2, @p=2

В результате получим:

code model speed ram hd price screen num total page_num num_of_pages
4 1298 600 64 10 1050,00 15 3 6 2 3
2 1321 500 64 8 970,00 12 4 6 2 3

А вот так будет выглядеть неполная вторая страница, если число записей на странице будет равно четырем:

  1. exec paging @n=4, @p=2

code model speed ram hd price screen num total page_num num_of_pages
6 1298 450 64 10 950,00 12 5 6 2 2
1 1298 350 32 4 700,00 11 6 6 2 2

Страницы: 1 2 3
Тэги:
ALL AVG battles CASE CAST CHAR CHARINDEX classes COALESCE Convert COUNT CTE DATEDIFF DATEPART DATETIME DELETE DISTINCT EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IN INNER JOIN insert INTERSECT ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MySQL NOT IN NULL ORDER BY Outcome outcomes OVER PARTITION BY pc PIVOT PostgreSQL printer product Больше тэгов
Учебник обновлялся
несколько дней назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100