如何加入逗号分隔列表?

问题描述:

我希望得到一个逗号从MySQL表分隔的列表,但匹配另一个表的用户名:如何加入逗号分隔列表?

任务:

-------------- 
id  people_id 
-------------- 
1  1,2  
2  3,4 

成员:

-------------- 
id  username 
-------------- 
1  James  
2  Alan 
3  Frank 
4  John 

这里是我的尝试:

$result = $db->query(' 
     SELECT *, 
     group_concat(members.username) 
     FROM tasks 
     LEFT JOIN members 
     ON find_in_set(members.id, tasks.people_id) 
     ')->fetchAll(PDO::FETCH_ASSOC); 

我得到的结果是:

James 

但我相信:

James, Alan 
Frank, John 
+10

修复您的数据模型 - 正确!除了目前的问题之外,你很可能会遇到更多的问题,这些问题是基于这种糟糕的设计选择,稍后在单个列中存储逗号值逗号。 – CBroe

+0

@CBroe好吧,是否喜欢你伤心并更新我的问题 – Jarla

+0

@ chris85好吧,更新了我的问题 – Jarla

嗨,请使用以下查询,您可以使用FIND_IN_SET为逗号分隔值进行检查。

select t.id, group_concat(m.username) 
from tasks t 
join members m on find_in_set(m.id, t.peopleid) 
group by t.id 
+0

我的结果现在是'詹姆斯'弗兰克'但不是'詹姆斯,阿兰''弗兰克,约翰' – Jarla

+0

@Jarla您能否发送您的数据库表的转储。这样我就可以测试并给你正确的查询 –