Mais conteúdo relacionado
Multi table select
- 2. 2
Copyright (c) 株式会社HEART QUAKE. All rights reserved .
テーブル構造
consumer_id
顧客ID
name
名前
email
メールアドレス
tel
電話番号
address
住所
1 千葉葉順 chiba@hea 0801292XX 東京都世⽥田
2 室⾕谷次郎郎 muroya@h 044542XX 神奈奈川県川
deal_id
取引ID
consumer_id
顧客ID
product_id
商品ID
count
個数
delivery_flg
配送フラグ
1 1 4 10 0
2 2 3 2 1
3 2 4 1 0
product_id
商品ID
product_name
商品名
price
単価
3 バスタオル 4,200
4 フェイスタオル 1,050
連番
連番
連番
0 = 未配送
1 = 配送済み
同じ意味の値
同じ意味の値
consumer_tbl (顧客テーブル)
deal_tbl (取引テーブル)
product_tbl (商品テーブル)
- 3. 3
Copyright (c) 株式会社HEART QUAKE. All rights reserved .
複数テーブルからのレコードの抽出 (1/6)
l ⾃自分が購⼊入をした
全ての製品の製品名を知りたいという場合
l このSQLでは ⾃自分が申込みした製品のproduct_idは取得でき
るが、製品名は取得できない。
- 製品名はproduct_tblで管理理されているため
product_id product_name price
1 XXX 3000
2 YYY 7000
product_tbl
deal_id consumer_id product_id
1 1 2
3 2 3
deal_tbl
SELECT product_̲id FROM deal_̲tbl
WHERE consumer_̲id = 1;
ケーススタディ
- 4. 4
Copyright (c) 株式会社HEART QUAKE. All rights reserved .
複数テーブルからのレコードの抽出 (2/6)
l 複数のテーブルからレコードの抽出する
SELECT product_̲tbl.product_̲name FROM deal_̲tbl, product_̲tbl
WHERE deal_̲tbl.product_̲id = product_̲tbl.product_̲id
AND deal_̲tbl.consumer_̲id = 1;
どこから
どんな条件で
抽出する
どこで連結するか
同じ製品を表す
product_id product_name price
1 XXX 3000
2 YYY 7000
product_tbl
deal_tbl
deal_id consumer_id product_id
1 1 2
3 2 3
- 5. 5
Copyright (c) 株式会社HEART QUAKE. All rights reserved .
複数テーブルからのレコードの抽出 (3/6)
1. 複数のテーブル(Excelでいうところのシート)にまたがって記録され
ているデータを
deal_̲tblのproduct_̲idとproduct_̲tblのproduct_̲idは、同じ製品を表しています。
SELECT product_̲tbl.product_̲name FROM deal_̲tbl, product_̲tbl
WHERE deal_̲tbl.product_̲id = product_̲tbl.product_̲id
AND deal_̲tbl.consumer_̲id = 1;
product_id product_name price
1 XXX 3000
2 YYY 7000
product_tbl
deal_id consumer_id product_id
1 1 2
3 2 3
deal_tbl
- 6. 6
Copyright (c) 株式会社HEART QUAKE. All rights reserved .
複数テーブルからのレコードの抽出 (4/6)
2. ひとつのレコードを⽰示す列列を連結点にしてて合体させ、
ひとつのテーブルのようになりました。
deal_tbl.
deal_id
deal_tbl.
consumer_id
deal_tbl.
product_id
product_tbl.
product_id
product_tbl.
product_name
product_tbl.
price
1 1 2 2 YYY 7000
3 2 3 3 ZZZ 1000
deal_tbl + product_tbl
SELECT product_̲tbl.product_̲name FROM deal_̲tbl, product_̲tbl
WHERE deal_̲tbl.product_̲id = product_̲tbl.product_̲id
AND deal_̲tbl.consumer_̲id = 1;
- 7. 7
Copyright (c) 株式会社HEART QUAKE. All rights reserved .
複数テーブルからのレコードの抽出 (5/6)
3. 条件句句を追加して、⽬目的のレコードを抽出する
SELECT product_̲tbl.product_̲name FROM deal_̲tbl, product_̲tbl
WHERE deal_̲tbl.product_̲id = product_̲tbl.product_̲id
AND deal_̲tbl.consumer_̲id = 1;
deal_tbl.
deal_id
deal_tbl.
consumer_id
deal_tbl.
product_id
product_tbl.
product_id
product_tbl.
product_name
product_tbl.
price
1 1 2 2 YYY 7000
3 2 3 3 ZZZ 1000
deal_tbl + product_tbl
- 8. 8
Copyright (c) 株式会社HEART QUAKE. All rights reserved .
SELECT product_̲tbl.product_̲name FROM deal_̲tbl, product_̲tbl
WHERE deal_̲tbl.product_̲id = product_̲tbl.product_̲id
AND deal_̲tbl.consumer_̲id = 1;
複数テーブルからのレコードの抽出 (6/6)
l 複数のテーブルにまたがったデータの抽出を⾏行行う場合の注意
- 列列を指定する際には、
「なんのテーブルの」(ドット)「なんの列列」と指定する
product_̲tbl「の」product_̲iddeal_̲tbl「の」product_̲id