SQL接続(JOIN)
SQL 結合は、2 つ以上のテーブルの行を結合するために使用されます。
SQL JOIN
SQL JOIN 句は、これらのテーブル間の共通フィールドに基づいて 2 つ以上のテーブルの行を結合するために使用されます。
最も一般的な JOIN タイプ: SQL INNER JOIN (単純な JOIN)。 SQL INNER JOIN は、JOIN 条件を満たす複数のテーブルのすべての行を返します。
デモデータベース
このチュートリアルでは、php サンプル データベースを使用します。
以下は「ウェブサイト」テーブルから選択されたデータです:
+----+-------------+------------ - ---------------+------+-----------+
| 国名 |
-- -+---------------+---------------+----- --+------+
| グーグル https://www.google.cm/ | タオバオ | | 13 | 中国語 |
| 4689 | フェイスブック | https://www.facebook.com/ |
| 0 | --------+--------------------------+----------+--- - -----+
| 国名 |
-- -+---------------+---------------+----- --+------+
| グーグル https://www.google.cm/ | タオバオ | | 13 | 中国語 |
| 4689 | フェイスブック | https://www.facebook.com/ |
| 0 | --------+--------------------------+----------+--- - -----+
以下はWebサイトアクセス記録テーブル「access_log」のデータです:
mysql> SELECT * FROM access_log;
+-----+---------+------ +- -----------+
日付 |
+-----+------+- ----------+
| 2016-05-10 | 230 | 05 - 14 | 2 | 2016 年 5 月 14 日 | 6 | 2016 年 5 月 14 日3 | 220 | 2016-05-15 | 8 | 545 | 2016-05-17 |
----+-------+-----------+
9 行セット (0.00 秒)
「ウェブサイト」の「
id」に注意してください" table
" 列は、"access_log" テーブルのフィールド "
site_id
" を指します。上の 2 つのテーブルは、「site_id」列を通じてリンクされています。
次に、次の SQL ステートメント (INNER JOIN を含む) を実行するとします。 +-----+---------+------ +- -----------+
日付 |
+-----+------+- ----------+
| 2016-05-10 | 230 | 05 - 14 | 2 | 2016 年 5 月 14 日 | 6 | 2016 年 5 月 14 日3 | 220 | 2016-05-15 | 8 | 545 | 2016-05-17 |
----+-------+-----------+
9 行セット (0.00 秒)
「ウェブサイト」の「
id」に注意してください" table
" 列は、"access_log" テーブルのフィールド "
site_id
" を指します。上の 2 つのテーブルは、「site_id」列を通じてリンクされています。
Instance SELECT Websites.id、Websites.name、access_log.count、access_log.dateFROM Websites
INNER JOIN access_logON Websites.id=access_log.site_id;
上記SQLを実行した出力結果は以下の通りです:
さまざまな SQL JOIN
例に進む前に、使用できるさまざまな SQL JOIN タイプをリストしてみましょう:
INNER JOIN: テーブル内に少なくとも 1 つの一致がある場合に行を返します
-
LEFT JOIN: 右のテーブルに一致するものがない場合でも、左のテーブルのすべての行を返します
RIGHT JOIN: 左のテーブルに一致するものがない場合でも、右のテーブルからすべての行を返します
FULL JOIN: いずれかのテーブルに一致がある限り、行が返されます