テーブル結合
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