2016-11-11 7 views
1

私は3つのテーブルを持っています。シングルIDに対する複数のレコードをグループ化して連結する方法

  1. 学生
  2. グループ
  3. group_membersです

私は彼らの参加グループ名でテーブルにすべての生徒データが表示されます。 学生が多数のグループに参加している可能性があります。グループ名をカンマで1つの表の列に表示します。

これは私の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

ここ

は修正クエリです
関連する問題