Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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_Database_Sorting - Fatal编程技术网

Php 如何按分组优先级对MySQL数据进行排序

Php 如何按分组优先级对MySQL数据进行排序,php,mysql,database,sorting,Php,Mysql,Database,Sorting,我正在尝试使用php根据分组优先级对mysql数据进行排序。我有一个名为“用户”的表,其中包含会员资料数据,另一个名为“评论”的表中包含会员对评级的反馈。我在review表的review_count字段中存储从0到5的评分 现在,我想根据以下优先级对用户配置文件进行排序: 表“用户”是这样的: uid name picture membership_status last_login -- ---------- ---------- ------------

我正在尝试使用php根据分组优先级对mysql数据进行排序。我有一个名为“用户”的表,其中包含会员资料数据,另一个名为“评论”的表中包含会员对评级的反馈。我在review表的review_count字段中存储从0到5的评分

现在,我想根据以下优先级对用户配置文件进行排序:

表“用户”是这样的:

uid name        picture     membership_status  last_login    
--  ----------  ----------  -----------------  ------------------
1   Jhon        jhon.jpg    1                  2014-07-16 04:40:05
2   Ravi                    0                  2014-07-09 10:18:38
3   Lucy        lucy.jpg    0                  2014-07-07 11:46:53
4   Sweta                   1                  2014-07-07 11:46:53
5   Philip      philip.jpg  0                  2014-07-09 10:31:53
id     review_by     review_to   review_count
-----  -----------   ---------   ------------
1      8             1           5
2      12            2           3
3      22            5           4
$sel_profiles = mysql_query("SELECT a.*, 
                                    b.review_to 
                               FROM users a 
                          LEFT JOIN reviews AS b ON b.review_to = a.uid 
                           ORDER BY a.membership_status DESC, 
                                    b.review_count DESC,
                                    a.picture DESC,
                                    a.last_login DESC 
                              LIMIT 0 ,10");
表格评论是这样的:

uid name        picture     membership_status  last_login    
--  ----------  ----------  -----------------  ------------------
1   Jhon        jhon.jpg    1                  2014-07-16 04:40:05
2   Ravi                    0                  2014-07-09 10:18:38
3   Lucy        lucy.jpg    0                  2014-07-07 11:46:53
4   Sweta                   1                  2014-07-07 11:46:53
5   Philip      philip.jpg  0                  2014-07-09 10:31:53
id     review_by     review_to   review_count
-----  -----------   ---------   ------------
1      8             1           5
2      12            2           3
3      22            5           4
$sel_profiles = mysql_query("SELECT a.*, 
                                    b.review_to 
                               FROM users a 
                          LEFT JOIN reviews AS b ON b.review_to = a.uid 
                           ORDER BY a.membership_status DESC, 
                                    b.review_count DESC,
                                    a.picture DESC,
                                    a.last_login DESC 
                              LIMIT 0 ,10");
现在我想按以下优先级对这些数据进行排序:

uid name        picture     membership_status  last_login    
--  ----------  ----------  -----------------  ------------------
1   Jhon        jhon.jpg    1                  2014-07-16 04:40:05
2   Ravi                    0                  2014-07-09 10:18:38
3   Lucy        lucy.jpg    0                  2014-07-07 11:46:53
4   Sweta                   1                  2014-07-07 11:46:53
5   Philip      philip.jpg  0                  2014-07-09 10:31:53
id     review_by     review_to   review_count
-----  -----------   ---------   ------------
1      8             1           5
2      12            2           3
3      22            5           4
$sel_profiles = mysql_query("SELECT a.*, 
                                    b.review_to 
                               FROM users a 
                          LEFT JOIN reviews AS b ON b.review_to = a.uid 
                           ORDER BY a.membership_status DESC, 
                                    b.review_count DESC,
                                    a.picture DESC,
                                    a.last_login DESC 
                              LIMIT 0 ,10");
  • 上次登录的高级会员
  • 上次登录的已审核成员
  • 具有上次登录的照片配置文件的成员
  • 上次登录的其他成员
  • 这是我正在使用的查询:

    uid name        picture     membership_status  last_login    
    --  ----------  ----------  -----------------  ------------------
    1   Jhon        jhon.jpg    1                  2014-07-16 04:40:05
    2   Ravi                    0                  2014-07-09 10:18:38
    3   Lucy        lucy.jpg    0                  2014-07-07 11:46:53
    4   Sweta                   1                  2014-07-07 11:46:53
    5   Philip      philip.jpg  0                  2014-07-09 10:31:53
    
    id     review_by     review_to   review_count
    -----  -----------   ---------   ------------
    1      8             1           5
    2      12            2           3
    3      22            5           4
    
    $sel_profiles = mysql_query("SELECT a.*, 
                                        b.review_to 
                                   FROM users a 
                              LEFT JOIN reviews AS b ON b.review_to = a.uid 
                               ORDER BY a.membership_status DESC, 
                                        b.review_count DESC,
                                        a.picture DESC,
                                        a.last_login DESC 
                                  LIMIT 0 ,10");
    
    但我没有得到我想要的正确结果。请任何人都可以建议我如何获得我想要的分组优先级的输出。提前谢谢

    $sel_profiles = mysql_query("SELECT a.*, 
                                    b.review_to 
                               FROM users a 
                          LEFT JOIN reviews AS b ON b.review_to = a.uid 
                           ORDER BY a.last_login DESC ,
                                    a.membership_status DESC                          
                              LIMIT 0 ,10");
    

    按这两个顺序排序本身将得到所需的结果。

    当mysql按图片描述排序时,这是一个字母描述顺序。您必须通过一个函数来更改图片,该函数在有图片时返回1,在没有图片时返回0。案例是一个好方法

    $sel_profiles = mysql_query("SELECT a.*, b.review_to, case when a.picture is null then 1 else 0 end case DESC as isPictured FROM users a LEFT JOIN reviews AS b ON b.review_to = a.uid ORDER BY a.membership_status DESC, b.review_count DESC, isPictured DESC, a.last_login DESC LIMIT 0 ,10");
    
    试试这个

    我想你也得重复一遍

    对不起,我的语言不流利