Php 如何执行此SQL查询?

Php 如何执行此SQL查询?,php,sql,Php,Sql,我有一个flash游戏网站,允许用户“喜欢”或“不喜欢”某个特定的游戏。当用户选择“喜欢/不喜欢”时,我的php应用程序会将一条记录插入名为likes的表中,该表包含以下列: game\u id-(所选游戏的id) time-(用户操作的时间,按照php中的time函数) type-(动作类型:“喜欢”或“不喜欢”) 如何获取上一周ieweek(time()-60*60*24*7)中最“喜欢”ietype='like'的10个游戏的id。然后按每场比赛“喜欢”的最大数量排序结果 这是我尝试使

我有一个flash游戏网站,允许用户“喜欢”或“不喜欢”某个特定的游戏。当用户选择“喜欢/不喜欢”时,我的php应用程序会将一条记录插入名为
likes
的表中,该表包含以下列:

  • game\u id
    -(所选游戏的id)
  • time
    -(用户操作的时间,按照php中的time函数)
  • type
    -(动作类型:“喜欢”或“不喜欢”)
如何获取上一周ie
week(time()-60*60*24*7)
中最“喜欢”ie
type='like'
的10个游戏的id。然后按每场比赛“喜欢”的最大数量排序结果

这是我尝试使用的查询,但仍然没有帮助。因为它只获取所有
类似的
记录,而不是总数

    SELECT `game_id` 
    FROM   `likes` 
    WHERE  `type` = 'like' 
    AND    `time` > '{$time}'

假设时间列是日期列,则可以执行此操作

  $time = date("Y-m-d", time() - (60*60*24*7));
或者更简洁地说

  $time = date("Y-m-d", strtotime("one week ago"));
查询应为

  SELECT `game_id`, count(*) as num_likes 
  FROM   `likes` 
  WHERE  `type` = 'like' 
  AND    `time` > '{$time}' 
  GROUP BY game_id 
  ORDER BY num_likes desc 
  LIMIT 10;
你可能需要和date_sub玩一玩,让它恰到好处,但希望这能让你走上正轨。限制10将限制为10个结果,这可能是您所需要的全部结果。

您可以使用:

$timestamp = strtotime("one week ago"); 

$sql ="SELECT game_id, 
       COUNT(type) as like_count 
       FROM likes 
       WHERE type = 'like' AND `time` > ".$timestamp." 
       GROUP BY type 
       ORDER BY like_count DESC
       LIMIT 0,10";

如果你试过什么,我们会帮你更好。我补充说,请现在查看帖子。谢谢你?神谕db2?mssql?标签上写着sqlWhat column type是time column。实际上我用的是time,没有日期。但这不是问题,伙计。我需要得到10个最受欢迎的
游戏id
。我试过了。id 1有1个like,id 2有1个like,id 1有2个like(id 2没有抓取)是fetch me。如何修复它?应该是
按类似的顺序\u count DESC
$timestamp = strtotime("one week ago"); 

$sql ="SELECT game_id, 
       COUNT(type) as like_count 
       FROM likes 
       WHERE type = 'like' AND `time` > ".$timestamp." 
       GROUP BY type 
       ORDER BY like_count DESC
       LIMIT 0,10";