いつもお世話になっております。
MySQL5.6です。
以下のような日別の成績テーブルがあります。
data
1生徒id, 科目id, 日付, 成績 2100, 1, 2018/10/21, 60点 3100, 1, 2018/10/23, 80点 4100, 1, 2018/10/30, 75点 5100, 2, 2018/11/10, 40点 6100, 2, 2018/11/11, 50点 7200, 3, 2018/09/03, 20点 8200, 3, 2018/09/16, 40点
これを以下のように、(生徒ごと科目ごとに)横一行にまとめて取得したいです。
data
1生徒id, 科目id, 日付, 成績 2100, 1, '2018/10/21,2018/10/23,2018/10/30', '60点,80点,75点' 3100, 2, '2018/11/10,2018/11/11', '40点,50点' 4200, 3, '2018/09/03,2018/09/16,2018/10/30', '20点,40点'
なので以下のようなSQLにしましたが、
sql
1select 2 category_id, 3 group_concat(date order by date asc separator ',') , 4 group_concat(score order by date asc separator ',') 5from 6 date_score_summaries 7group by 8 user_id =1 and category_id
以下のように、科目まで一緒になってしまいました。。。
data
1生徒id, 科目id, 日付, 成績 2100, 1, 2018/10/21,2018/10/23,2018/10/30,2018/11/10,2018/11/11, 60点,80点,75点,40点,50点 3200, 3, 2018/09/03,2018/09/16,2018/10/30,20点,40点
分からなくて色々試してる中で、
以下のように一人に絞り込んで、group by を category_idだけにすると、
sql
1select 2 category_id, 3 group_concat(date order by date asc separator ',') , 4 group_concat(score order by date asc separator ',') 5from 6 date_score_summaries 7where 8 certificate_id = 1 and user_id=1 9group by 10 category_id
以下のように取得できました。
data
1生徒id, 科目id, 日付, 成績 2100, 1, 2018/10/21,2018/10/23,2018/10/30, 60点,80点,75点 3100, 2, 2018/11/10,2018/11/11, 40点,50点
上記のことから、
「group_concat」を使う場合、
group by には、複数カラム指定出来ないでしょうか?
分かる方教えていただけないでしょうか?
どうぞ宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー