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