質問: 以下のようにプロフィールのテーブル[profile]と趣味のテーブル[hobby]があります。 ``` [profile] user_id nickname 格納例 1 山田太郎 2 山田花子 [hobby] user_id name 格納例 1 野球 1 ゲーム 2 読書 2 あやとり ``` 1つのSQL文でプロフィールと趣味を同時に取得したいと思っているのですが可能なのでしょうか? 以下のように出力したいと考えています。 ``` 山田太郎 野球 ゲーム 山田花子 読書 あやとり ``` 趣味の数は最大2ですが、可変に対応できるならもっと良いです。 PHP等を用いて最初にプロフィールのテーブルを検索し、その次に趣味のテーブルを検索して出力するなら出来るのですが、クエリの発行回数が多くなるので避けたいところです。 よろしくお願いします。
回答: group_concat関数を利用すれば可能です。 区切り文字の指定や利用方法はリファレンスを確認してください。 また、結合できる文字数には上限があるので気を付けて下さい。 ``` select u.user_id, u.nickname, GROUP_CONCAT(h.hobbyname) from users u, hobby h where u.user_id = h.user_id group by u.user_id, u.nickname; ```