gpt4 book ai didi

mysql - 任务 + 参与者 : JOIN n. .n 并将结果划分为组(在 1 个查询中)

转载 作者:行者123 更新时间:2023-11-29 23:23:23 26 4
gpt4 key购买 nike

只是一个小介绍:

  1. 任务(任务表)
  2. 用户(用户表)
  3. 用户可以参与不同的任务(task_has_user表)
  4. 参与者分为作者、实现者、检查者等。

The data is stored in following schema:

我想获取以逗号分隔的参与者的所有任务列表,如下所示(数组表示):

[
'title' => 'Example task',
...
'authors' => 'Name1 Surname1, Name2 Surname2',
'doers' => 'Name3 Surname3',
'checkers' => 'Name4 Surname4'
]

一个查询中。

我认为 MySQL CONCAT(GROUP_CONCAT 等)函数可能会帮助我解决这个问题,但我不确定在这里使用它是否正确。

请帮忙:3

最佳答案

Laravel v4.2 中就是这样做的。查询数 = 6 * 任务数。重..但我很快就会改变它。

/**
* Get the full list of tasks with participants
* @return array
*/
public static function index() {
/**
* All tasks
* @var array
*/
$tasks = DB::select("SELECT `title` FROM `task` ");

/**
* All roles
* @var array
*/
$roles = ['doers', 'checkers', 'authors'];

foreach ($tasks as &$task)
{
foreach ($roles as $role) {
$sql = "SELECT GROUP_CONCAT(CONCAT_WS(' ', `name`, `surname`) SEPARATOR ', ') AS `$role` FROM `task` ";
$sql .= "JOIN `task_has_user` ON `idtask` = `task_idtask` ";
$sql .= "JOIN `user` ON `iduser` = `user_iduser` ";
$sql .= "WHERE `task_has_user`.`role` = " . (array_search($role, $roles) + 1);

$task->$role = DB::select($sql)[0]->$role;
}
}

return $tasks;
}

关于mysql - 任务 + 参与者 : JOIN n. .n 并将结果划分为组(在 1 个查询中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27129837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com