この章では、
MySQLの JOIN を使用して 2 つ以上のテーブルのデータを クエリする方法を紹介します。 mysql への参加に興味のある友人は、一緒に学んでください 前の章では、テーブルからデータを読み取る方法を学習しました。これは比較的単純ですが、実際のアプリケーションでは、複数のデータからデータを読み取る必要があることがよくあります。テーブルから。
この章では、MySQL の JOIN を使用して 2 つ以上のテーブルのデータをクエリする方法を紹介します。
SELECT、UPDATE、DELETE ステートメントで MySQL の結合を使用して、複数テーブルのクエリを結合できます。
以下では、MySQL LEFT JOIN と JOIN の使用の違いを示します。
コマンドプロンプトでJOINを使用してください RUNOOBデータベースには2つのテーブルtcount_tblとrunoob_tblがあります。 2 つのデータ テーブルのデータは次のとおりです:
例
次の例を試してください:
root@host# mysql -u root -p password; Enter password:******* mysql> use RUNOOB; Database changed mysql> SELECT * FROM tcount_tbl; +-----------------+----------------+ | runoob_author | runoob_count | +-----------------+----------------+ | mahran | 20 | | mahnaz | NULL | | Jen | NULL | | Gill | 20 | | John Poul | 1 | | Sanjay | 1 | +-----------------+----------------+ 6 rows in set (0.01 sec) mysql> SELECT * from runoob_tbl; +-------------+----------------+-----------------+-----------------+ | runoob_id | runoob_title | runoob_author | submission_date | +-------------+----------------+-----------------+-----------------+ | 1 | Learn PHP | John Poul | 2007-05-24 | | 2 | Learn MySQL | Abdul S | 2007-05-24 | | 3 | JAVA Tutorial | Sanjay | 2007-05-06 | +-------------+----------------+-----------------+-----------------+ 3 rows in set (0.00 sec) mysql>
次に、MySQL の JOIN を使用して上記 2 つのテーブルを接続し、すべての runoob_author フィールドに対応する runoob_count フィールド値を読み取ります。 runoob_tbl テーブルと tcount_tbl テーブル:
mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count -> FROM runoob_tbl a, tcount_tbl b -> WHERE a.runoob_author = b.runoob_author; +-------------+-----------------+----------------+ | runoob_id | runoob_author | runoob_count | +-------------+-----------------+----------------+ | 1 | John Poul | 1 | | 3 | Sanjay | 1 | +-------------+-----------------+----------------+ 2 rows in set (0.01 sec) mysql>
PHP スクリプトで JOIN を使用しますPHP で
mysql_query() 関数を使用して、SQL ステートメントを実行します。上記と同じ SQL ステートメントをパラメータとして使用できます。 mysql_query()関数 。 次の例を試してください:
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author'; mysql_select_db('RUNOOB'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Author:{$row['runoob_author']} <br> ". "Count: {$row['runoob_count']} <br> ". "Tutorial ID: {$row['runoob_id']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?>
MySQL LEFT JOINMySQL の左結合は結合とは異なります。 MySQL LEFT JOIN は、右側のテーブルに対応するデータがない場合でも、左側のデータ テーブルのすべてのデータを読み取ります。
例
MySQL LEFT JOIN のアプリケーションを理解するために、次の例を試してください。
root@host# mysql -u root -p password; Enter password:******* mysql> use RUNOOB; Database changed mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count -> FROM runoob_tbl a LEFT JOIN tcount_tbl b -> ON a.runoob_author = b.runoob_author; +-------------+-----------------+----------------+ | runoob_id | runoob_author | runoob_count | +-------------+-----------------+----------------+ | 1 | John Poul | 1 | | 2 | Abdul S | NULL | | 3 | Sanjay | 1 | +-------------+-----------------+----------------+ 3 rows in set (0.02 sec)
LEFT JOIN は、上の例で使用されています。このステートメントは、左側のデータ テーブル runoob_tbl 内の選択されたフィールド データをすべて読み取ります。右側のテーブル tcount_tbl には、対応する runoob_author フィールド値がありません。
以上がMysql での Join の応用例の詳細の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。