mysql Ver 15.1 Distrib 10.4.16-MariaDB
MySQL グループ化したデータの指定列をカンマ区切りで取得することができないため、
アドバイス頂けますでしょうか。よろしくお願いします。
実際のSQLを簡略化していますので、おかしな点があったら申し訳ありません。
概要は、TEST1とTEST2のテーブルをidでJOINし、idとdateでグループ化しています。
例えば、図書館でユーザー(ID)が本を借りた日(DATE)を取得し、グループ化した日付の中で、
3冊借りている場合は、nameをカンマ区切りで取得したいです。
リスト化する方法を調べ、※部のようにしましたが、#42000You have an error in your SQL syntax;構文エラーが出ている状態です。
※部を、b.nameとすると、1冊分のレコードしか取れない。
SQL
1CREATE TABLE mysql.test1 (id int, book_id int, lend_date Date) 2INSERT INTO mysql.test1 VALUES(1, 1, '2021/11/26') 3INSERT INTO mysql.test1 VALUES(1, 2, '2021/11/27') 4INSERT INTO mysql.test1 VALUES(1, 3, '2021/11/26') 5INSERT INTO mysql.test1 VALUES(2, 4, '2021/11/25') 6INSERT INTO mysql.test1 VALUES(2, 5, '2021/11/25') 7 8CREATE TABLE mysql.test2 (book_id int, name varchar(10)) 9INSERT INTO mysql.test2 VALUES(1, 'title-1') 10INSERT INTO mysql.test2 VALUES(2, 'title-2') 11INSERT INTO mysql.test2 VALUES(3, 'title-3') 12INSERT INTO mysql.test2 VALUES(4, 'title-4') 13INSERT INTO mysql.test2 VALUES(5, 'title-5') 14 15SELECT 16 a.id, a.lend_date, b.name ←※LISTAGG(b.name, ',') WITHIN GROUP (order by b.name)※ 17 FROM 18 mysql.test1 a 19 INNER JOIN 20 mysql.test2 b 21 ON 22 a.book_id = b.book_id 23 GROUP BY 24 a.id 25 , DATE_FORMAT(a.lend_date, '%Y年%c月%e日')
現状の結果
id lend_date name
1 2021/11/26 title-1
1 2021/11/27 title-2
2 2021/11/25 title-4
欲しい結果
id lend_date name
1 2021/11/26 title-1,title-3
1 2021/11/27 title-2
2 2021/11/25 title-4,title-5
お忙しいところ見て頂きありがとうございます。
ご回答いただけると大変助かります。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー