我正在使用Laravel4php框架,我需要使用fluent查询生成器来获取一些统计类型数据。我有一个数据库表,它的结构类似于折叠
id: int
group_id: int
sent_at: datetime
message_id: int
我需要一个流畅的查询,它将获得具有相同消息id的所有行的计数,我还希望由group_id组织该计数。
例如,我的消息id为1,而消息id为1的每一行的组id可能相同,也可能不相同。我需要知道给定消息id的表中有哪些组id,以及每个组id的总数是多少。
我希望这是有意义的。
谢谢你的帮助。
发布于 2013-08-23 12:44:09
这是Laravel 4版本:
$message_id = 1;
// You can change "amount" to anything that best suits you
// The `orderBy` line is not necessary, but I'm assuming you will may need it.
$groups = DB::table('YOUR_TABLE_NAME')
->select(array('group_id', DB::raw('COUNT(*) `amount`')))
->where('message_id', '=', $message_id)
->groupBy('group_id')
->orderBy('amount', 'DESC')
->get();
foreach ($groups as $g) {
echo "$g->group_id has $g->amount messages with id $message_id";
}
发布于 2013-08-23 07:59:36
尝试该查询以获取每个group_id的message_id计数:
SELECT message_id, count(group_id) FROM table GROUP BY message_id
要获得给定的message_id,只需使用"WHERE":
SELECT message_id, count(group_id) FROM table WHERE message_id = XX GROUP BY message_id
要获取给定message_id的所有message_id,只需使用这样的简单查询:
SELECT group_id FROM table WHERE message_id = XX
如果这不是你想要的,请告诉我--我们会研究正确的:)
(当然,将" table“更改为表名)
编辑: Fluent版本示例,以获取用于group_id =1的message_id计数:
$query = DB::table('table')
->select(array('message_id', DB::raw('COUNT(group_id) as group_count')))
->where('message_id', '=', 1)
->group_by('message_id')
->get();
https://stackoverflow.com/questions/18397599
复制相似问题