MySQL での Join の使用に関する詳細な説明

MySQL での Join の使用に関する詳細な説明

前の章では、1 つのテーブルからデータを読み取る方法を学習しました。これは比較的簡単ですが、実際のアプリケーションでは、複数のテーブルからデータを読み取る必要があることがよくあります。

このセクションでは、MySQL JOIN を使用して 2 つ以上のテーブルのデータをクエリする方法を紹介します。

MySQL 結合を使用すると、SELECT、UPDATE、および DELETE ステートメントで複数のテーブルを結合できます。

以下では、MySQL LEFT JOIN と JOIN の使用の違いについて説明します。

コマンドプロンプトでJOINを使用する

RUNOOB データベースには、tcount_tbl と runoob_tbl という 2 つのテーブルがあります。 2 つのデータ テーブルのデータは次のとおりです。

次の例を試してください。

root@host#mysql -u root -p パスワード;
パスワードを入力してください:*******
mysql> RUNOOB を使用します。
データベースが変更されました
mysql> tcount_tbl から * を選択;
+-----------------+----------------+
| runoob_author | runoob_count |
+-----------------+----------------+
| マフラーン | 20 |
| マハナズ | NULL |
| ジェン | NULL |
| ギル | 20 |
| ジョン・ポール | 1 |
| サンジェイ | 1 |
+-----------------+----------------+
セット内の6行(0.01秒)
mysql> runoob_tbl から * を選択します。
+-------------+----------------+-----------------+-----------------+
| runoob_id | runoob_title | runoob_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 1 | PHP を学ぶ | John Poul | 2007-05-24 |
| 2 | MySQL を学ぶ | Abdul S | 2007-05-24 |
| 3 | JAVA チュートリアル | Sanjay | 2007-05-06 |
+-------------+----------------+-----------------+-----------------+
セット内の 3 行 (0.00 秒)
マイSQL>

次に、MySQL JOIN を使用して上記の 2 つのテーブルを接続し、runoob_tbl テーブル内のすべての runoob_author フィールドに対応する runoob_count フィールドの値を tcount_tbl テーブルから読み取ります。

mysql> a.runoob_id、a.runoob_author、b.runoob_countを選択します
 -> runoob_tbl a、tcount_tbl b から
 -> ここで、a.runoob_author = b.runoob_author;
+-------------+-----------------+----------------+
| runoob_id | runoob_author | runoob_count |
+-------------+-----------------+----------------+
| 1 | ジョン・ポール | 1 |
| 3 | サンジェイ | 1 |
+-------------+-----------------+----------------+
セットに2行(0.01秒)
マイSQL>

PHP スクリプトで JOIN を使用する

PHP は、mysql_query() 関数を使用して SQL ステートメントを実行します。mysql_query() 関数のパラメータとして同じ SQL ステートメントを使用できます。

次の例を試してください。

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'ルートパスワード';
mysql_connect は、次のコードで実行されます。
if(!$conn)
{
 die('接続できませんでした: ' . mysql_error());
}
$sql = 'a.runoob_id、a.runoob_author、b.runoob_countを選択します
  runoob_tbl a、tcount_tbl b から
  ここで、a.runoob_author = b.runoob_author';
mysql_select_db('RUNOOB');
$retval = mysql_query( $sql, $conn );
if(!$retval) の場合
{
 die('データを取得できませんでした: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
 echo "著者:{$row['runoob_author']} <br> "。
   「カウント: {$row['runoob_count']} <br>」。
   「チュートリアルID: {$row['runoob_id']} <br>」。
   "--------------------------------<br>";
} 
echo "データが正常に取得されました\n";
mysql_close($conn);
?>

MySQL 左結合

MySQL の左結合は結合とは異なります。 MySQL LEFT JOIN は、右側のテーブルに対応するデータがない場合でも、左側のテーブルのすべてのデータを読み取ります。

MySQL LEFT JOIN の適用を理解するには、次の例を試してください。

root@host#mysql -u root -p パスワード;
パスワードを入力してください:*******
mysql> RUNOOB を使用します。
データベースが変更されました
mysql> a.runoob_id、a.runoob_author、b.runoob_countを選択します
 -> runoob_tbl a から tcount_tbl b に左結合
 -> ON a.runoob_author = b.runoob_author;
+-------------+-----------------+----------------+
| runoob_id | runoob_author | runoob_count |
+-------------+-----------------+----------------+
| 1 | ジョン・ポール | 1 |
| 2 | アブドゥル S | NULL |
| 3 | サンジェイ | 1 |
+-------------+-----------------+----------------+
セット内の3行(0.02秒)

上記の例では、LEFT JOIN が使用されています。このステートメントは、右側のテーブル tcount_tbl に対応する runoob_author フィールド値がない場合でも、左側のデータ テーブル runoob_tbl から選択されたすべてのフィールド データを読み取ります。

上記は、編集者が紹介したMySQLでのJoinの使用に関する詳細な説明です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL 結合テーブルクエリの基本操作 左結合のよくある落とし穴
  • MySQL におけるさまざまな一般的な結合テーブルクエリの例の概要
  • MySQL 8.0.18 安定版がリリースされました! 予想通りハッシュ結合が実装されました
  • Mysql での結合操作
  • MySQLの自己接続と結合の詳細な理解
  • MySQL 内部結合の使用例 (必読)
  • 7つのMySQL JOINタイプのまとめ

<<:  VUEは底部吸引ボタンを実装

>>:  Linux システムで Java 環境変数を設定する方法

推薦する

Web ベースの電子メール コンテンツの HTML フォーマット標準の概要

1. ページ要件1) 標準のヘッダーとフッターを使用するXML/HTML コードコンテンツをクリップ...

js シンプルで粗雑なパブリッシュとサブスクライブのサンプルコード

パブリッシュ/サブスクライブとは何ですか?例を挙げてみましょう。あなたは服を買うために店に行きます。...

MySQL データ定義言語 DDL の基本ステートメント

MySQL DDL ステートメントDDL、DMLとは何ですか。 DDL はデータ定義言語であり、CR...

MySQL シリーズ 13 MySQL レプリケーション

目次1. MySQLレプリケーション関連の概念2. シンプルな1マスター1スレーブアーキテクチャの実...

JavaScript で文字列内の最長の単語を見つける 3 つの方法 (推奨)

この記事は、Free Code Camp の基本アルゴリズム スクリプト「文字列内の最長の単語を見つ...

JS で単一ファイルコンポーネントを実装する方法

目次概要単一ファイルコンポーネント基本概念シンプルなローダーコンポーネントコンテンツの解析コンポーネ...

ウェブページ(ウェブサイト)のデザインと制作に関する考えや経験の共有

まずは投稿する前に! 「I Want to Study on My Own!」に改めて感謝します。た...

テキストの折り畳み特殊効果を実現する HTML+CSS の例

この記事では、主に HTML + CSS を使用してテキストの折りたたみ特殊効果を実現する例を紹介し...

Vueベースのカスタムコンポーネントを実装してアイコンを導入する

序文プロジェクト開発では、アイコンを使用する方法はたくさんあります。iconfont で適切なアイコ...

Python Django アプリケーションを Docker 化する方法

Docker は、開発者やシステム管理者がアプリケーションを軽量コンテナとして構築およびパッケージ化...

Linuxのip netnsコマンドを使用してネットワークポートを分離し、IPアドレスを設定します。

1. 分離マーカーを追加します。 ip netns add fd 2. 指定されたネットワーク カ...

JavaScript バブルソートの例

目次1. バブルソートとは何か2. 例を挙げるラウンド1:第2ラウンド:第3ラウンド:第4ラウンド:...

Linux で SSH 経由でリモート ファイルシステムをマウントする方法の詳細な説明

SSHFS の機能: FUSE(Linux向けの最高のユーザー空間ファイルシステムフレームワーク)を...

ウェブサイトはいつ広告を掲載すべきでしょうか?

最近、インターネットのベテランと「広告」について議論したのですが、彼から非常に興味深い意見を聞きまし...

Vueでミックスインを使用する方法

目次序文使い方要約する序文Vue にはコードの再利用に使われる mixins という設定項目がありま...