テーブル結合

1つのデータベースに、それぞれが異なる情報を持つ複数のテーブルを保持し、
それぞれのテーブルに同じフィールドがあれば、それを利用してテーブル結合してデータを取得する事が出来ます。
今回はサンプルでcustomersテーブルとshopテーブルを利用して説明します。
先に以下の内容でテーブルを作りました。
customersテーブル
| id | name | address | products |
|---|---|---|---|
| 1 | poe | shinjyuku | iphone5 |
| 2 | su | shinagawa | iphone3 |
| 3 | hnin | ikebukuro | iphone5 |
| 4 | ei | ikebukuro | iphone5 |
shopテーブル
| id | products | price | code |
|---|---|---|---|
| 1 | iphone | 30000 | IP01 |
| 2 | iphone4 | 40000 | IP02 |
| 3 | iphone4S | 42000 | IP03 |
| 4 | iphone5 | 50000 | IP04 |
customersテーブのproductsというフィールドとshopテーブルのproductsフィールドを一致して、
現在販売されている商品とお客さんの情報を取得できます。
以下のようなmysql文で取得できます。
|
1 | SELECT * from customers,shop WHERE customers.products = shop.products; |
結果の表示です。
| id | name | address | products | id | products | price | code |
|---|---|---|---|---|---|---|---|
| 2 | su | shinagawa | iphone4 | 2 | iphone4 | 40000 | IP02 |
| 1 | poe | shinjyuku | iphone5 | 4 | iphone5 | 50000 | IP04 |
| 3 | hnin | ikebukuro | iphone5 | 4 | iphone5 | 50000 | IP04 |
| 4 | ei | ikebukuro | iphone5 | 4 | iphone5 | 50000 | IP04 |
NATURAL JOIN
-NATURAL JOINは2つのテーブルを取り、同じ名前を持つ列を
自動的に結合させます。
サンプル :
|
1 | SELECT * FROM customers NATURAL JOIN shop; |
結果表示:
| id | products | name | address | price | code |
|---|---|---|---|---|---|
| 2 | iphone4 | su | shinagawa | 40000 | IP02 |
| 4 | iphone5 | ei | ikebukuro | 50000 | IP04 |
上記の場合、テーブルの両方に存在するカラムは「id」と「products」カラムだけですので「id」と「products」カラムを使って結合が行われます。
JOIN…..ON
2つのテーブルの結合させる列を指定したい場合には、JOIN…..ON構造を次のように使用します。
サンプル:
|
1 | SELECT * FROM customers JOIN shop ON customers.products = shop.products; |
※結果は「SELECT * from customers,shop WHERE customers.products = shop.products;」と同じです。
ASの使用
ASキーワードを利用して、入力にかかる手数を減らしクエリを読みやすくする事も出来ます。
サンンプル:
|
1 | SELECT * from customers AS cust, shop AS sp WHERE cust.products = sp.products; |
※結果は「SELECT * from customers,shop WHERE customers.products = shop.products;」と同じです。
Author Profile

スターフィールド編集部
SHARE




