MySQLのきほん「外部結合」

スポンサーリンク
data codes through eyeglasses MySQL
Photo by Kevin Ku on Pexels.com

前回は、「内部結合」をご紹介した。

今回は、結合する両方のテーブルに存在するレコードはもちろん、どちらか一方のテーブルにだけ存在するレコードも含めて取り出す「外部結合」をご紹介しよう。

それでは、実際に操作してみよう。

まずは、mysqlクライアントを起動しよう。

PS C:\Users\vinta> mysql -u myusr -p
Enter password: *****

続いて、basicデータベースに移動しよう。

mysql> USE basic;
Database changed

外部結合でレコードを表示しよう

scheduleテーブルと、usrテーブルを外部結合してレコードを表示しよう。

以下の通り、入力しよう。
なお、このbasicデータベースには、scheduleテーブルとusrテーブルにはあらかじめレコードが登録してあるものとする。

mysql> SELECT s.subject,s.pdate,u.uname FROM usr As u
    -> LEFT OUTER JOIN schedule AS s ON u.uid = s.uid;

以下の通り、表示されれば、成功である。

mysql> SELECT s.subject,s.pdate,u.uname FROM usr As u
    -> LEFT OUTER JOIN schedule AS s ON u.uid = s.uid;
+-----------------+------------+----------+
| subject         | pdate      | uname    |
+-----------------+------------+----------+
| 小学校参観日    | 2024-08-10 | 井上花子 |
| NULL            | NULL       | 田中美紀 |
| NULL            | NULL       | 原田直樹 |
| WINGS会議       | 2024-06-25 | 掛谷奈美 |
| C社打ち合わせ   | 2024-07-31 | 掛谷奈美 |
| D企画打ち上げ   | 2024-08-21 | 掛谷奈美 |
| WINGS会議       | 2024-06-25 | 鈴木正一 |
| B企画書提出     | 2024-07-05 | 佐藤留吉 |
| WINGS会議       | 2024-06-25 | 山田祥寛 |
| MySQL本原稿提出 | 2024-07-31 | 山田祥寛 |
| WINGSメンバ面接 | 2024-08-05 | 山田祥寛 |
| D企画打ち上げ   | 2024-08-21 | 山田祥寛 |
+-----------------+------------+----------+
12 rows in set (0.09 sec)

テーブルを名が長くて、毎回テーブルを名で修飾するのが面倒な場合、AS句でテーブル名の別名を設定できる。今回は、scheduleテーブルを「s」、usrテーブルを「u」としている。

なお、今回の「外部結合」では、「双方のテーブルでキーが一致するレコード」+「左テーブルのすべてのレコード」を取り出した。この「左」とは、「LEFT OUTER JOIN」の左に記述した「usrテーブル」となる。

取り出したレコードの中には、scheduleテーブルに対応するキーがないレコードもある。その場合には、scheduleテーブルのフィールドには「NULL」が表示される。

今回は、ここまでである。mysqlクライアントを終了しよう。

mysql> exit;
Bye
PS C:\Users\vinta>

参考)3ステップでしっかり学ぶ MySQL入門 [改訂第3版]  山田奈美(著)山田祥寛(監修)技術評論社

コメント

タイトルとURLをコピーしました