JOINを1行で表示できるようにする。JOINを1行で表示できるようにする。2020年1月14日webプログラムを組む際にはデータベースとの連結は必須です。かのワードプレスやEC-CUBEといったメジャーなプログラムはすべてデータベースと連結して豊富な機能を実現しています。私も請謁ながらwebプログラム開発をさせていただくことがしばしばございます。その際にMYSQLと連結させて開発しています。今回はちょっとしたことですが、役立ったテクニックがありましたので、忘備録として記録いたします。テストテーブルとデータは以下の通りです。JOINで読み込みするとこうなります。使って、テーブルBを一つにまとめます。BY文を付け足します。SQL文は組み合わせを考えて効率よくスポンサーリンク今回やりたかったことデータベースには異なったテーブル同士を「結合」して参照する方法があります。マイクロソフトアクセスでいうところの「クエリ」です。JOIN」で1対複数のデータを結合します。1対10で結合したとすると、SELECTで最低10行のデータが読み込みされます。今回これを1行で読み込みしたいと思いました。ことはググって調べると出てきます。今回もちゃんと出てきました。GROUP_CONCAT」関数を使用するとできるとありました。CONCATってエクセルにもある関数なのでイメージが付きます。いうことで、MYSQLで実験してみました。テストテーブルとデータは以下の通りです。上位のAテーブルと、下位のBテーブルを準備ました。それぞれ中身が入っています。Bテーブルの中身はAテーブルのbase01と結合する形です。JOINで読み込みするとこうなります。JOINでセレクトすると、以下のように複数行にわたって読み込みされます。b.link_noBテーブルが3件あるので、結合して読み込むと全部で4行になります。これはこれでその通りです。結合しているsub01~sub03の3件を1件にまとめます。使って、テーブルBを一つにまとめます。関数を追加してまとめて読み込みを実行してみます。b.link_noFROMの前にGROUP_CONCATを追加します。予定通り3行になっていたデータが1行にまとまりました。あれ、base02データが読み込みされていません。JOINにしているのは、結合データがなくても全てのデータを読み込みしたいのにこれでは具合が悪いです。それが抜けていたため、base02が呼び出しされなかったのです。BY文をつけて呼び出しします。文を付け足すことでちゃんと読み込みされるようになりました。BY文を付け足します。実用的なことを言えば、データのソートが必要になります。BY文を付け足します。a.noソートを付け足せばOKです。あれ、文法エラーになりました。BY文の表記順番が間違っているためです。この2つの文には以外にも表記順番があります。