Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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 Mysql根据需要进行非常复杂的排序/排序_Php_Mysql - Fatal编程技术网

Php Mysql根据需要进行非常复杂的排序/排序

Php Mysql根据需要进行非常复杂的排序/排序,php,mysql,Php,Mysql,我必须写一个复杂的查询 我有mysql表名广告,有1000个广告 现在我的分页显示所有广告按日期降序添加列。每页20条记录 Select * from ads order by sort_order asc,date_added desc LIMIT 0,20; 新的要求是 排序顺序是根据成员类型分配的。因此,在每一页上,我需要显示20个广告总数(5个广告,从每个会员类型)。如果一个会员在任何页面上没有5条记录,下一个会员将显示前一个会员的5+缺失广告 现在我需要这样的页面顺序 Name

我必须写一个复杂的查询

我有mysql表名广告,有1000个广告

现在我的分页显示所有广告按日期降序添加列。每页20条记录

 Select * from ads order by sort_order asc,date_added desc LIMIT 0,20;
新的要求是

排序顺序是根据成员类型分配的。因此,在每一页上,我需要显示20个广告总数(5个广告,从每个会员类型)。如果一个会员在任何页面上没有5条记录,下一个会员将显示前一个会员的5+缺失广告

现在我需要这样的页面顺序

Name    date_added sort_order
ad1      12-2-2015   1     //PREMIUM MEMBER's ADS
ad2      11-2-2015   1     //PREMIUM MEMBER's ADS
ad3      10-2-2015   1     //PREMIUM MEMBER's ADS
ad4      09-2-2015   1     //PREMIUM MEMBER's ADS
ad5      08-2-2015   1     //PREMIUM MEMBER's ADS

ad6      13-2-2015   2     //GOLD MEMBER's ADS
ad7      12-2-2015   2     //GOLD MEMBER's ADS
ad8      07-2-2015   2     //GOLD MEMBER's ADS (There may be chance gold type of mebers has posted only 3 ads)

ad9      18-2-2015    3    //SILVER MEMBER's ADS
ad10      10-2-2015   3    //SILVER MEMBER's ADS
ad11      03-2-2015   3    //SILVER MEMBER's ADS
ad12      02-2-2015   3    //SILVER MEMBER's ADS
ad13      02-2-2015   3    //SILVER MEMBER's ADS
ad14      02-2-2015   3    //SILVER MEMBER's ADS
ad15      01-2-2015   3    //SILVER MEMBER's ADS

ad16      12-2-2015   4       //REGULAR MEMBER's ADS
ad17      08-2-2015   4      //REGULAR MEMBER's ADS
ad18      03-2-2015   4      //REGULAR MEMBER's ADS
ad19      02-2-2015   4      //REGULAR MEMBER's ADS
ad20      01-2-2015   4      //REGULAR MEMBER's ADS
意味着如果不存在具有特定排序顺序的中间行,则下一个顺序应显示更多记录。如上例所示,sort_order=2在表中有3条记录,所以sort_order=3应该显示7。5+2=7 对于特定的排序顺序,还需要保留降序中添加的按日期排序的顺序

这可以通过一个mysql查询来完成,这样我的分页就不会停止工作

或者其他任何方式

我试过所有的方法,但这对丢失的记录不起作用


谢谢你的帮助。因为我在过去的两天里一直在尝试。现在我决定在这里提问。

您能解释一下逻辑位吗?sort\u order=2在表中有3条记录,所以sort\u order=3应该显示5+2=7是。这意味着表中可能只存在3个排序顺序为2的广告。因此,下一个排序顺序=3应该显示7。由于每页记录应保持20,以便正确分页。请解释逻辑。不是应该显示7的东西。你从哪里得到5和2?你的问题很难理解-请向我们展示你的sql语句。我建议你运行四个查询,每个成员类型一个,并在应用程序端进行处理。在数据库中似乎有太多的边缘案例来处理这个问题——如果类别4的记录最少会发生什么?如果你进入一个只有3类记录的页面会怎么样?等等