2014-02-19 51 views
0

我正在爲電視開發EPG。我需要在每個頁面中顯示10個頻道的epg。我需要從SQL Server獲取數據。打電話給服務器從0 - 9獲得渠道比用戶可能決定更換頁面,對於我來說意味着我應該撥打另一個電話到服務器以獲得渠道從10 - 19,下一頁20 - 29等。問題是如何獲得像SQL Server那樣的組數據?SQL Server從數據庫中獲得一組10個元素

id channelNr description shortname starttime andtime 
0 100  desc1  tv1  10:10:00 10:40:00 
1 101  desc2  tv2  10:40:00 12:40:00 

這是我的桌子的樣子,但更多的行

+0

什麼是你的表是什麼樣子?你有什麼疑問,你到底發生了什麼問題? –

+0

我知道如何獲得前10名,但我不知道如何從sqlserver中接下來的10個元素。在我發佈表格之後的秒數 – user3189504

回答

1

你需要像這樣的東西 - 一個CTE(公用表表達式),它返回你需要的數據,另外還有一個RowNum列,它定義了一個行號;那麼你可以隨便挑WHERE RowNum BETWEEN 0 AND 9第一,然後WHERE RowNum BETWEEN 10 AND 19第二頁等

既然你要選擇第10個行,那RowNum列必須有一定的排序標準 - 例如你的「頻道號碼」或任何對你有意義的東西(我只是選擇BirthDate DESC作爲演示)。

此示例這裏是基於AdventureWorks示例數據庫 - 你需要以使其適應自己的需要和你的表/列:

;WITH PagedResults AS 
(
    SELECT 
     e.BusinessEntityID , 
     e.NationalIDNumber , 
     e.OrganizationLevel , 
     e.JobTitle , 
     e.BirthDate , 
     e.HireDate , 
     RowNum = ROW_NUMBER() OVER(ORDER BY BirthDate DESC) 
    FROM 
     HumanResources.Employee e 
) 
SELECT 
    * 
FROM  
    PagedResults 
WHERE 
    RowNum BETWEEN 0 AND 9 
+0

非常感謝你:)它完美的作品 – user3189504

-1

您可以使用SQL Server的OFFSET-FETCH條款。 OFFSET指定要跳過的行數,FETCH指定在跳過OFFSET中指定的行數之後要選擇的行數。

+2

OFFSET-FETCH是SQL Server ** 2012 **中的**新功能**,因此不適用於使用** 2008 **版本的OP ..... –

+0

即時使用Sql Server 2008 – user3189504

+1

-1沒有讀取標籤 –

相關問題