2012-03-20 6 views
1

私はSQL Server 2008が新しく、JSFページのページングロジックのクエリにいくつかの助けが必要です。ここでJSFからのSQL Server 2008のクエリ - ページング

は私のクエリです:

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

私がDBからのみ100個のレコードを取得する必要があり、ユーザーが自分のJSFページ上の次のクリック史上とき私は次の100件のレコードを取得する必要が初めて。ユーザーのページのクリック、つまり次と前のボタンのトラッキングを続けます。

お時間をいただきありがとうございます。

+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

ありがとうマイケルフレドリクソン。あなたのお時間をありがとう... – userJ

+0

ありがとうAndomar – userJ

関連する問題