我正在测试Ext JS应用程序(客户端)和Play Framework(服务端)。 我在Ext JS中使用了一个带有分页的网格。
分页部分需要将URL查询参数发送到我的Play!服务器。这没什么大不了的,但是如何在SQL语句中处理这些参数?
示例:
第一次请求:
http://myDomain:9000/GetUsers?_dc=123456789&page=1&start=0&limit=25
第二次要求:
http://myDomain:9000/GetUsers?_dc=123456789&page=2&start=25&limit=25
我的想法: 通常在SQL中,您可以设置 TOP 结果:
SELECT TOP 25 FROM USERS
但是如何将第二个请求转换为Sql查询?
感谢您花时间帮助我!
==>> 编辑:我正在开发SQL Server 2008,但我希望这适用于Sql Server 2005或更高版本以及Oracle 9及更高版本: - )
答案 0 :(得分:0)
您可以尝试以下方式:
WITH Query_1 AS (
SELECT
Field1, Field2, etc
ROW_NUMBER() OVER (ORDER BY Field1, Field2, etc) AS RowID
FROM Table
WHERE x=y
)
SELECT * FROM Query_1 WHERE RowID >= @start
AND RowID < @start + @limit
当然ROW_NUMBER在SQL 2000中不存在,但由于你没有告诉我们你正在使用哪个 SQL,我假设有更新的东西。
答案 1 :(得分:0)
因为您正在使用Play!框架,你应该做的是有一个适当的model,实体代表你的SQL表。然后收到一系列结果是built in:
// 25 max users start at 25
List<User> users = User.all().from(25).fetch(25);
您还应该查看pagination module。我没有测试过它,但它看起来就像你想要的那样。