如何在GROUP_CONCAT内获取计数数字。我们的想法是,对于每个元素,它会增加,但会在下一行重置为0。
我见过类似这样的问题: mysql group_concat with a count inside? 但我仍然对如何使用我的特定查询处理它感到困惑。
我正在使用laravel 4.2
这是我的代码和表格结构:
$Project::leftJoin('tasks as t', 'projects.id', '=', 't.project_id')
->leftJoin('equipments as e', 't.equipment_id', '=', 'e.id')
->leftJoin('processes as p', 'e.process_id', '=', 'p.id')
->select(array(
'projects.id',
DB::raw("GROUP_CONCAT(CONCAT('Task # - ', p.name,' / ', e.`name`, '') separator ' | ') as tasks"),
))
->groupBy('projects.id');
我的表格结构和数据如下:
项目
+----------------+
| id |
+----------------+
| 1 |
| 2 |
|----------------+
任务
+----------------+----------------+----------------+
| id | project_id | equipment_id |
| 1 | 1 | 1 |
| 2 | 1 | 3 |
| 3 | 2 | 2 |
+----------------+----------------+----------------+
设备
+----------------+----------------+----------------+
| id | process_id | name |
| 1 | 1 | Xerox X |
| 2 | 1 | Samsung C |
| 3 | 2 | TL4000 |
+----------------+----------------+----------------+
过程
+----------------+----------------+
| id | name |
| 1 | Printing |
| 2 | Binding |
+----------------+----------------+
欲望输出将是一个项目列表,显示每个项目使用的任务和设备:
projects.id | tasks
1 | Task 1 - Printing / Xerox X | Task 2 - Binding - TL4000
|
2 | Task 1 - Printing / Samsung C
任务编号将增加,但对于下一个项目组,它将重置为1。