我需要一点帮助在Laravel 3中编写频繁的查询。
我有一个名为“投票”的表格,用于在“帖子”中存储用户投票。
所以,“votes”表有一个“user_id”,“post_id”和“timestamp”。
现在我需要编写一个查询来显示“趋势”帖子(在特定时间范围内)。我的逻辑是首先选择在所需时间范围内添加的记录(例如最后30天),然后按post_id对记录进行分组,然后按计数对它们进行排序。
我可以单独为每个条件编写查询..但我无法弄清楚如何将所有这些条件合并到一个查询中。
基本上......我只是希望有人为这个SQL编写频繁的查询
SELECT post_id, COUNT(*)
FROM votes
GROUP BY post_id
ORDER BY COUNT(*) DESC
任何形式的帮助都将受到极大的赞赏。
谢谢。 :)
答案 0 :(得分:1)
通过频繁的查询构建器,我假设您指的是Fluent Query Builder。
使用Fluent Query Builder,您可以这样:
Laravel 3:
$results = DB::table('votes')->get(array('post_id','count(*)'))->group_by('post_id')->order_by('count(*)','desc')->get();
Laravel 4:
$results = DB::table('votes')->select('post_id','count(*)')->groupBy('post_id')->orderBy('count(*)','desc')->get();
希望这有帮助!祝你好运!
答案 1 :(得分:0)
我猜你正在寻找这样的东西。
SELECT
p.post_id, COUNT(*)
FROM
posts p
LEFT JOIN
votes v
WHERE p.add_date_time > DATE_SUB( CURRENT_DATE() , INTERVAL 30 DAY)
GROUP BY p.post_id
ORDER BY COUNT(*) DESC