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 環境変数を設定する方法

推薦する

JavaScriptはキャンバスを使用して座標と線を描画します

この記事では、JavaScriptでキャンバスを使用して座標と線を描く具体的なコードを参考までに紹介...

スライディングカルーセル効果を実現する js

この記事では、スライディングカルーセル効果を実現するためのjsの具体的なコードを参考までに共有します...

Vue の動的コンポーネントと非同期コンポーネントの詳細な理解

1. 動的コンポーネント <!DOCTYPE html> <html> &l...

トップ 10 Js 画像処理ライブラリ

目次導入1. 異食症2. レナ3. コンプレッサー4. ファブリック5. ぼかす6. 画像を結合する...

type=fileファイル変更フォームの名前が正常にエコーされない問題を解決

easyui フレームワークのコードは次のとおりです。 css: .ファイルボックス{ フロート:...

W3C チュートリアル (12): W3C SOAP アクティビティ

Web サービスは、アプリケーション間の通信に関係しています。SOAP は、Web サービス間の X...

nginx を使用してカナリアリリースをシミュレートする方法

この記事では、ブルーグリーン デプロイメントと、nginx を使用してカナリア リリースを最も簡単な...

Linuxでスワップパーティションファイルを作成する方法

スワップの紹介Linux のスワップ (スワップ パーティション) は、Windows の仮想メモリ...

Vueドロップダウンリストの2つの実装方法の比較

Vueドロップダウンリストの2つの実装最初の方法はv-forを使用する <el-select ...

Linux で Nginx 1.16.0 をインストールするための詳細なチュートリアル

最近 Linux をいじっていたので、nginx の新しいバージョンをインストールしたいと思いました...

MySQL で重複行を見つけて削除する方法

目次1. 重複行を見つける方法2. 重複行を削除する方法3. 複数の列で重複を見つける方法4. クエ...

Angularコンポーネントのライフサイクルの詳しい説明(パート2)

目次1. ビューフック1. ngAfterViewInit および ngAfterViewCheck...

ソースコードから MySQL 8.0.20 をコンパイルしてインストールする詳細なチュートリアル

前回の記事では、次のことを紹介しました。 MySQL8.0.20 インストール チュートリアルとイン...

SpringBootはActiviti7実装コードを統合する

Activiti7 の正式リリース以降、SpringBoot2.x との統合開発を全面的にサポートし...

負荷分散の基礎知識とnginxを使用した負荷分散の簡単な例

Nginx は、一般的に 7 層の負荷分散に使用できます。この記事では、負荷分散に関する基本的な知識...