【MySQL】2つのテーブルをJOINで結合した例2020年6月2日mysqlツイートシェアはてブ送るPocketよくPHPでログインしてメッセージを投稿する簡単なアプリケーションを見ることがあります。その際はMySqlで登録したユーザーを管理する為のテーブルと投稿されたメッセージを管理する為のテーブルを作成するかと思います。今回はその2つのテーブルを結合して表示させるサンプルを防備ログとして残す。実際にPHPでどのようなSQL文で結合させるのか?実際にやりたいこと今回の実装するにあたり以下のテーブルを作成しました。登録したユーザー名などを管理する為のUSERSテーブル投稿したメッセージなどを管理する為のMESSAGESテーブルそれを踏まえた上で、ユーザーがメッセージを投稿するとメッセージ内容とログインしているユーザー名を表示させます。(ユーザー名とメッセージは別々のテーブルで管理)以下がサンプルの動画です。ユーザー名とメッセージは別々のテーブルで管理してますが、メッセージとユーザーネームが表示されています。これはテーブルを結合させている訳ですがこちらのサンプルを載せていきたいと思います。ユーザーを管理するテーブルでは実際にテーブルを紹介しますが、ユーザーを管理するテーブル名をusersとして作成。idは登録した際の自動的に加算されるカラムですが、今回はユーザー名が登録されるusernameのカラムを結合で表示させたいところです。|+----------+-------------+------+-----+---------+----------------+メッセージを管理する為のテーブルメッセージを管理する為のテーブル名をmessagesとして以下のように作成。idは、メッセージが投稿された際に自動的に加算さえるカラムです。messageは投稿されたメッセージを保存するカラムです。user_idは、ユーザーテーブルのid(自動的に加算される)を登録する為のカラムで今回はここがポイントになります。|+---------+--------------+------+-----+---------------------+----------------+結合するポイントとは?では、実際に上記の2つのテーブルを結合させて、投稿したユーザーとメッセージを一覧に表示させにはどうしたらいいのか?それは、usersテーブルにあるidカラムとmessagesテーブルのuser_idカラムを結合の条件にするところがポイントとなります。以下の画像を参考にしていただきたいのですが、以下の例だとusersテーブルの「id」が「2」のユーザーがmessagesテーブルだと2つあります。これは「id」が「2」のユーザーが2回投稿したことになります。実際にPHPでどのようなSQL文で結合させるのか?では実際にPHPではどのようにテーブルを結合させているのかというと以下のようなSQLです。関してpostedが投稿した時間のカラムで並び替えを行ってますがこちらの説明は省きます。desc";取り出したい情報は、以下です。関しては「id」だけだとusersテーブルにも「id」カラムが存在するので、messagesテーブルを指すように「.」で繋げます。このように表示させるにはJOINを使ってテーブルを結合する必要があります。JOINを構文は以下です。messages.user_id=users.id」という部分で、messagesテーブルのuser_idとusersテーブルのidカラムが等しいかどうかを条件とし、合致する場合は結合されて1つのテーブルのように指定したカラムの情報が取り出せるようになります。mysqlphpmysqlphpツイートシェアはてブ送るPocketコメントを残すコメントを投稿するにはログインしてください。コメントデータの処理方法の詳細はこちらをご覧ください。人気の投稿とページ【PHP】phpによるcsvの複数行の削除方法が知りたい。【MySQL】SQLで(NOT)INは、遅いらしいので(NOT)EXISTSを使うべき!?【CSS】画像をスマホ対応!!ウィンドウに合わせて自動で拡大・縮小させるには?!最近の投稿matchMediaでメディアクエリのブレイクポイントで条件分岐してみよう!画面外に配置した要素が横スクロールで表示されてしまう。Reserved.Posting....コメントを読み込み中...コメントを投稿するにはログインしてください。