在GROUP_CONCAT内生成计数数字

时间:2017-07-26 17:00:48

标签: mysql laravel laravel-4 group-concat

如何在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。

0 个答案:

没有答案