質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

636閲覧

MySQL グループ化したデータの指定列をカンマ区切りで取得する方法

seastar

総合スコア62

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2021/11/26 04:14

編集2021/11/26 04:51

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

お忙しいところ見て頂きありがとうございます。
ご回答いただけると大変助かります。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/11/26 04:33 編集

テーブルの簡単なサンプルをcreate table/insertで提示ください あ、あと具体的にどういう条件でどういう結果がほしいのかもお願いします
seastar

2021/11/26 04:52

ご指摘ありがとうございます。 質問文を更新しました!ご確認をお願いします。
guest

回答1

0

ベストアンサー

SQL

1select id,lend_date,group_concat(name) as name 2from test1,test2 where test1.book_id=test2.book_id 3group by id,lend_date;

投稿2021/11/26 05:10

yambejp

総合スコア115012

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

seastar

2021/11/26 05:27

解決しました!ありがとうございます。 1日考えて解決できなかったので、本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問