2017-10-18 202 views
1

我希望得到一個逗號從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

回答

1

嗨,請使用以下查詢,您可以使用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您能否發送您的數據庫表的轉儲。這樣我就可以測試並給你正確的查詢 –