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

Постраничная разбивка записей (пейджинг) стр. 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 4
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INFORMATION_SCHEMA INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker Больше тэгов
Учебник обновлялся
вчера
https://exchangesumo.com/obmen/PRRUB-CardRUB/ . Поверки и юстировки теодолита
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.