0

我正在使用 Laravel 4 php 框架,我需要使用 fluent query builder 来获取一些统计类型数据。我有一个结构如下的数据库表

id: int
group_id: int
sent_at: datetime
message_id: int

我需要一个流畅的查询,它将获取具有相同消息 id 的所有行的计数,并且我还希望该计数由 group_id 组织。

例如,我的消息 id 为 1,消息 id 为 1 的每一行都有一个组 id,该组 id 可能相同,也可能不同。我需要知道表中给定消息 ID 的组 ID,以及每个组 ID 的总数。

我希望这是有道理的。

感谢您的任何帮助。

4

2 回答 2

2

这是 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-23T12:44:09.550 回答
-2

尝试该查询以获取每个 message_id 的 group_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 的所有 group_id,只需使用如下简单查询:

SELECT group_id FROM table WHERE message_id = XX

如果那不是您要找的东西,请告诉我——我们会做正确的:)

(当然将“表”更改为您的表名)

编辑:获取 message_id = 1 的 group_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();
于 2013-08-23T07:59:36.617 回答