Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 分页过滤_Php_Mysql_Pagination_Filtering - Fatal编程技术网

Php 分页过滤

Php 分页过滤,php,mysql,pagination,filtering,Php,Mysql,Pagination,Filtering,如果这个解释不是100%清楚,我提前道歉 我试图根据用户的评分(然后根据用户ID)按顺序列出用户。我实际上是在尝试对结果进行分页,因为可能会有大量的结果 我有两张桌子: 表A:列为“userid” 表B:列为“rating”和“userid”以及“groupid” 还有其他专栏,但这些都是相关的 每个用户都可以使用以下值提交组的评级:-1、0或1,记录在“评级”中。通过获得与给定组相对应的“状态”评级的净总和来评估每个组的净评级 我有一个基本问题: SELECT groupid, useri

如果这个解释不是100%清楚,我提前道歉

我试图根据用户的评分(然后根据用户ID)按顺序列出用户。我实际上是在尝试对结果进行分页,因为可能会有大量的结果

我有两张桌子:

  • 表A:列为“userid”
  • 表B:列为“rating”和“userid”以及“groupid”
还有其他专栏,但这些都是相关的

每个用户都可以使用以下值提交组的评级:-1、0或1,记录在“评级”中。通过获得与给定组相对应的“状态”评级的净总和来评估每个组的净评级

我有一个基本问题:

SELECT groupid, userid, SUM(rating) 
FROM A LEFT JOIN B ON A.userid = B.userid 
GROUP BY A.userid 
ORDER BY SUM(rating) DESC, A.userid ASC 
但是,我想分页,所以我需要能够根据之前显示的最后一个用户ID选择结果

通常,根据userid大于显示的最后一个userid的任何结果来过滤结果是很容易的。但是,由于我是根据总和(评级)对结果排序的,因此实际上没有顺序排序系统


即使结果中的用户ID不是按顺序排列的,是否有一种很好的方法可以过滤我的结果以进行分页?

您是否尝试过使用带偏移量的限制


您是否尝试过使用带偏移量的限制


您托管的ide是什么?或者仅仅是纯SQL?我认为这里唯一可行的方法是创建另一个表,其中填充了用户ID的评级顺序。当评级发生变化时,您必须保持此更新。因此,当您运行整体查询时,请使用此表与表B连接,并在order by子句中使用此order字段。您托管的ide是什么?或者仅仅是纯SQL?我认为这里唯一可行的方法是创建另一个表,其中填充了用户ID的评级顺序。当评级发生变化时,您必须保持此更新。所以,当您运行整体查询时,使用这个表与表B连接,并在order by中使用这个order字段,我试过了。带偏移量的限值可以正常工作。问题是获取“下一个”用户,该用户将基于显示的最后一个用户ID。在我用类似于?p=29的东西解析url中的第一行之前,然后只是偏移限制,将1添加到该行号上,尝试了……问题是结果是基于总和(评级)而不是用户ID排序的。因为结果不是按用户ID顺序列出的,所以我不能指定像?p=29这样的东西。我用自己的一个db表做了一个小例子,并限制了我对非ID行数的工作。如果我在带有sum列的语句末尾加上“limit 30,20”,它将直接进入第30行并显示结果。忘了是回邮了!这是我开始的查询…但是我需要添加限制偏移量(限制0,10)例如-这不是问题。但是,我还需要一个语句,该语句将只选择使用“最后一个”用户标识之后的结果。问题是,对userid进行简单的比较是行不通的,因为结果不是基于userid的顺序。是的,我试过了。带偏移量的限值可以正常工作。问题是获取“下一个”用户,该用户将基于显示的最后一个用户ID。在我用类似于?p=29的东西解析url中的第一行之前,然后只是偏移限制,将1添加到该行号上,尝试了……问题是结果是基于总和(评级)而不是用户ID排序的。因为结果不是按用户ID顺序列出的,所以我不能指定像?p=29这样的东西。我用自己的一个db表做了一个小例子,并限制了我对非ID行数的工作。如果我在带有sum列的语句末尾加上“limit 30,20”,它将直接进入第30行并显示结果。忘了是回邮了!这是我开始的查询…但是我需要添加限制偏移量(限制0,10)例如-这不是问题。但是,我还需要一个语句,该语句将只选择使用“最后一个”用户标识之后的结果。问题是,对userid进行简单的比较是行不通的,因为结果不是基于userid的顺序。