2012-03-20 3 views
1

SQL Server 2008에 익숙하지 않아서 JSF 페이지의 페이지 매김 논리에 대한 쿼리에 도움이 필요합니다. 나는 사용자가 난 단지 옆에 100 개 개의 레코드를 가져올 필요가 옆에 내 JSF 페이지에서 클릭 지금까지 DB 때에서만 100 개의 레코드를 얻을 필요가 처음으로JSF에서 SQL Server 2008 쿼리 - 페이징

select * 
from ShipmentHistory sh 
where sh.CCIPortID in ? 
order by sh.TrackingNumber, sh.CreateTimeStamp 

:

여기 내 쿼리입니다. 계속해서 다음 및 이전 버튼과 같은 페이지의 사용자 클릭 수를 추적합니다.

감사합니다.

+0

"SQL Server 페이지 매김"을 검색하면 [많은] (http://stackoverflow.com/questions/109232/what-is-the-best-way-to-paginate-results-in- SQL Server) [답변] (http://www.codeproject.com/Articles/12338/Using-ROW_NUMBER-to-paginate-your-data-with-SQL-Se) – Andomar

답변

3

먼저 결과 집합의 개수를 수행해야 총 레코드 수와 데이터를 표시 할 페이지 수를 알 수 있습니다.

다음으로 검색 할 시작 및 끝 행을 지정하고 다음과 비슷한 쿼리를 사용하여 결과의 ​​해당 부분을 가져와야합니다.

SELECT * FROM (
    SELECT 
     *, 
     ROW_NUMBER() OVER (ORDER BY sh.TrackingNumber, sh.CreateTimeStamp) AS rn, 
    FROM ShipmentHistory sh 
    WHERE sh.CCIPortID in ? 
) AS ordered 
WHERE rn >= @startRow AND rn < @endRow 

참고 : SELECT *를 사용하지 마십시오, 당신은 반환해야 실제 열이이를 교체합니다.

+1

감사합니다 Michael Fredrickson. 시간 내 주셔서 감사합니다 ... – userJ

+0

감사합니다 Andomar – userJ