gpt4 book ai didi

php - GROUP_CONCAT 不适用于 codeigniter 和 php 中的参数

转载 作者:行者123 更新时间:2023-11-29 02:46:21 24 4
gpt4 key购买 nike

我有如下所示的三个表:

测试用例

id   project_id     requirement_id
1 5 11,12
2 4 12,13
3 5 10,12

task_categories(引用带有 requirement_id 的 test_case 表)

 id      name
10 ten
11 eleven
12 twelve
13 thirtien

projects(引用带有 project_id 的 test_case 表)

id    name
4 P1
5 P2

现在,我想通过传递像 project_id=5 这样的参数来使用 where 条件进行查询,并希望输出如下所示:

id   project_name     requirement_name
1 P2 eleven,twelve
3 P2 ten,twelve

我在我的模型中尝试了以下代码:

public function display($project_id) {
$sql = "
SELECT i.id as id, i.project_id as project_id, requirement_id, GROUP_CONCAT(c.name SEPARATOR '\n <br>*') as req_name, p.id as projects_id FROM test_case i, task_categories c, projects p
WHERE FIND_IN_SET(c.id, i.requirement_id) AND i.project_id = $project_id
GROUP BY i.id";

$query = $this->db->query($sql);
return $query->result();
}

最佳答案

您当前的方法存在问题,因为它会导致在使用 GROUP BY 时选择非聚合列。这是一个应该有效的查询:

SELECT t1.id,
COALESCE(t2.project_name, 'NA') AS project_name,
t1.req_name
FROM
(
SELECT t.id,
t.project_id,
GROUP_CONCAT(tc.name SEPARATOR '\n <br>*') AS req_name
FROM test_case t
INNER JOIN task_categories tc
ON FIND_IN_SET(tc.id, t.requirement_id) > 0
GROUP BY t.id, t.project_id
) t1
LEFT JOIN projects t2
ON t1.project_id = t2.id

在上面的查询中,我将 test_casetask_categories 加入到一个子查询中,以获得 idproject_id< 的所有组合,以及他们的需求列表。然后我使用另一个 LEFT JOINprojects 表中引入项目名称。

关于php - GROUP_CONCAT 不适用于 codeigniter 和 php 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41662933/

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