中間テーブルの作成が適切という回答をいただいております。構成自体がJSON型に適切ではありませんでしたのでご注意ください
MySQLのJSON型の扱いについて質問があります。
もしかしたらJSON以前の問題かもしれませんのでご了承ください。
テーブル:groups
id | name | join_user |
---|---|---|
1 | Aグループ | ["1","2","4"] |
2 | Bグループ | ["1","3","5"] |
3 | Cグループ | ["1","4","3"] |
4 | Dグループ | ["2","4","5"] |
テーブル:users
id | name |
---|---|
1 | A’さん |
2 | B’さん |
3 | C’さん |
4 | D’さん |
5 | E’さん |
上記の2テーブルを結合して最終的に以下の出力がしたいと考えています。
groups.join_userのJSONをusers.idとしてusers.nameに変換が目的です。
id | name | join_user | join_user_name |
---|---|---|---|
1 | Aグループ | ["1","2","4"] | A'さん,B'さん,D'さん |
2 | Bグループ | ["1","3","5"] | A'さん,C'さん,E'さん |
3 | Cグループ | ["1","4","3"] | A'さん,D'さん,C'さん |
4 | Dグループ | ["2","4","5"] | A'さん,D'さん,E'さん |
適切な方法があるとともうのですが
現在、手法としてはGROUP_CONCAT、REGEXP CONCATで作成しています。
SELECT G.id,G.name,G.join_user, GROUP_CONCAT(U.name SEPARATOR '、') AS join_user_name FROM `groups` AS G LEFT JOIN `users` AS U ON G.join_user REGEXP CONCAT('"',U.id, '"') GROUP BY G.id;
一応、目的の出力はできているのですが、皆様に適切なSQL文についてご教示いただきたくご質問いたしました。
何卒お願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。