2016-11-11 34 views
1

我有3個表。如何使用分組與多個記錄對單個ID

  1. 學生
  2. group_members

我會告訴所有學生的數據,以表其加入的組名。 可能是學生加入了很多團體,我想用逗號在一個表格列中顯示他們的團體名稱。

這是我的SQL代碼:

SELECT `users`.*,`groups`.`gr_name`,`id` as `uid` FROM `users` 
LEFT JOIN `group_members` ON `users`.`id` = `group_members`.`gm_telebe` 
LEFT JOIN `groups` ON `group_members`.`gm_group` = `groups`.`gr_id` 
WHERE `users`.`level` < 5 GROUP by `id` 
ORDER by `reg_date` DESC; 

如果我刪除GROUP by id然後我會得到反覆的錶行的所有結果。 但我想顯示每個學生的名字1次。

你能告訴我我在代碼中的錯誤嗎?

回答

2

GROUP_CONCAT將連接用逗號分隔的值。

這裏是被修改的查詢:

SELECT `users`.*, GROUP_CONCAT(`groups`.`gr_name`) AS group_name, `id` as `uid` 
FROM `users` LEFT JOIN `group_members` ON `users`.`id` = `group_members`.`gm_telebe` 
LEFT JOIN `groups` ON `group_members`.`gm_group` = `groups`.`gr_id` 
WHERE `users`.`level` < 5 GROUP by `id` ORDER by `reg_date` DESC; 

參考:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

相關問題