この章では、
MySQLの JOIN を使用して 2 つ以上のテーブルのデータを クエリする方法を紹介します。 mysql への参加に興味のある友人は、一緒に学んでください 前の章では、テーブルからデータを読み取る方法を学習しました。これは比較的単純ですが、実際のアプリケーションでは、複数のデータからデータを読み取る必要があることがよくあります。テーブルから。
この章では、MySQL の JOIN を使用して 2 つ以上のテーブルのデータをクエリする方法を紹介します。
SELECT、UPDATE、DELETE ステートメントで MySQL の結合を使用して、複数テーブルのクエリを結合できます。
以下では、MySQL LEFT JOIN と JOIN の使用の違いを示します。
コマンドプロンプトでJOINを使用してください RUNOOBデータベースには2つのテーブルtcount_tblとrunoob_tblがあります。 2 つのデータ テーブルのデータは次のとおりです:
例
次の例を試してください:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 テーブル:
1 2 3 4 5 6 7 8 9 10 11 | 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()関数 。 次の例を試してください:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?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 のアプリケーションを理解するために、次の例を試してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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 サイトの他の関連記事を参照してください。