Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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_Sql_Sql Order By - Fatal编程技术网

Php 如何通过此查询进行订购?

Php 如何通过此查询进行订购?,php,sql,sql-order-by,Php,Sql,Sql Order By,我在游戏中有喜欢/不喜欢的表格:id,game\u id,类型(喜欢/不喜欢),时间 表示例: 这段代码给出了上周游戏的喜好,按喜好数排序: $limit = 10; $time = _time() - 60*60*24*7; $games_id = array(); $games_id_query = $this->db->execQuery("SELECT `game_id`, count(*) as `likes_count` FROM `likes` WHERE `type`

我在游戏中有喜欢/不喜欢的表格:
id
game\u id
类型
(喜欢/不喜欢),
时间

表示例:

这段代码给出了上周游戏的喜好,按喜好数排序:

$limit = 10;
$time = _time() - 60*60*24*7;
$games_id = array();
$games_id_query = $this->db->execQuery("SELECT `game_id`, count(*) as `likes_count` FROM `likes` WHERE `type` = 'like' AND `time` > '{$time}' group by `game_id` order by `likes_count` DESC LIMIT {$limit}");
$games_id_num = $games_id_query->num_rows;
if($games_id_num > 0) {
    while($row = $games_id_query->fetch_object()) {
        unset($row->likes_count);
        $games_id[] = (array) $row;
    }
}
我需要补充这个代码。我还要一个订单,这将是这个游戏的不喜欢计数,ASC


我该怎么做?仅使用SQL。。。非常感谢

从DESC更改为ASC,这是您想要的吗

  SELECT game_id, count(*) as likes_count
    FROM likes
   WHERE type = 'like'
     AND time > '{$time}'
   group by game_id
   order by likes_count ASC LIMIT {$limit}

你可能想要这样的东西:

SELECT `game_id`,
    SUM(IF(`type` = 'like', 1, 0)) AS likes_count,
    SUM(IF(`type` = 'dislike', 1, 0)) AS dislikes_count
FROM `likes`
WHERE `time` > '{$time}'
GROUP BY `game_id`
ORDER BY `likes_count` DESC, `dislikes_count` ASC
LIMIT {$limit}
也就是说,请考虑使用准备好的语句和参数化查询,而不是直接将PHP变量嵌入SQL

有关更多信息,请参见此问题: