あけましておめでとうございます。
takeです。
Web制作をしてる際、DBの複数レコードを1行に集約した結果を表示したい!!
って時がまれにあります。
View側でループし、複数レコードを1行に表示するように小細工してもいいのですが、
MySQLには「GROUP_CONCAT」という集約関数があります。
詳しくはここ。
では、早速試してみましょう。
1.社員と部署の関係を持つテーブルを作成します。
作成した結果はこれ。
見てのとおり、john以外の人は複数の部署に所属しているので、複数レコード抽出されています。
この複数行の結果を、1行に集約する為に「GROUP_CONCAT」関数を使用します。
例にも示したとおり、「GROUP_CONCAT」内でorder by が使えます。
この他にも、group by 等も使えますので、かなり使い勝手はよいと思います。