6. テーブルの結合
JOIN結合と SQL 問い合わせ
1
金子邦彦
(データベース演習)
URL: https://www.kkaneko.jp/de/de/index.html
謝辞:この資料では「いらすとや」のイラストを使用しています
リレーショナルデータベースの基礎
SQLコマンドの習得
テーブルの結合とデータ取得
実践的なSQLの応用
2
6-1. イントロダクション
3
リレーショナルデータベースの仕組み
データをテーブルと呼ばれる表形式で保存
テーブル間関連で結ばれる。複雑な構造を持ったデータ
を効率的に管理することを可能に。
4
関連
商品テーブルと購入テーブル
5
関連
商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
購入者
商品番号
X
1
X
3
Y
2
購入
Xさんは、1みかんと,
3 メロンを買った
Yさんは、 2 りんごを買った
商品テーブルの情報
購入テーブルの情報
結合の例
商品テーブルと購入テーブルを
して、購入者がどの商品を購入
したかのデータを取得。
結合条件は、商品テーブルのID
性と購入テーブルの商品番号属性
が等しい場合に結合
6
関連
商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
購入者
商品番号
X
1
X
3
Y
2
購入
SELECT * FROM 商品
JOIN 購入
ON 商品.ID = 購入.商品番号;
ID 商品名 単価
購入者
商品番号
みかん
50
X
1
メロン
500
X
3
りんご
100
Y
2
結合の例
7
SQLの実行により
新しく生成される
テーブル
ID 商品名 単価
購入者
商品番号
みかん
50
X
1
メロン
500
X
3
りんご
100
Y
2
SELECT * FROM 商品
JOIN 購入
ON 商品.ID = 購入.商品番号;結合条件
結合のためのSQL
関連
商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
購入者
商品番号
X
1
X
3
Y
2
購入
結合条件の指定
商品テーブルの「ID」と購入テーブルの「商品番
号」属性が等しいという結合条件
等しい値を持つ」という結合条件の表し方
8
SELECT * FROM 商品
JOIN 購入
ON 商品.ID = 購入.商品番号;結合条件
結合のためのSQL
商品.ID = 購入.商品番号
テーブル1.属性3 = テーブル2.属性4
まとめ
テーブルの結合の基本
結合は、異なるテーブルを一つにまとめる操作
結合条件は通常、テーブルの特定の属性同士の値が等しい場合に使用。
その他、より複雑な結合条件などを指定できる。
結合によって、データベースの柔軟性と効率性が向
SQLでの結合の書き方
JOINONを使用してテーブルの結合を行う
SELECT * FROM 商品 JOIN 購入 ON 商品.ID = 購入.商品番号; のよう
に書く
複数の条件を指定する場合は、ANDORを使用して結合条件を追加
結合の応用
結合操作を通じて、関連あるデータを1つのテーブルに明確に示すこ
とができるようになり、データの絞り込みや分析が容易になる。
結合条件を工夫することで、さまざまなビジネス要件に対応したデー
タの抽出や分析が可能。
9
結合を行う SQL の例
SELECT 顧客.名前, 注文.注文日
FROM 顧客
JOIN 注文
ON 顧客.ID = 注文.顧客ID
WHERE 顧客.名前 = '山田' AND 注文.注文日 = '2023-11-03';
10
Access 固有の機能制限を気にしすぎるよりは、
次に示すような世界標準の書き方をマスターしましょう
6-2. 演習
11
Access 利用時の注意点①
SQL の世界標準: JOIN が使える
Access だけ: JOIN が使えない。代わりに INNER
JOIN を使う
12
SELECT * FROM 商品
JOIN 購入
ON 商品.ID = 購入.商品番号;
SELECT * FROM 商品
INNER JOIN 購入
ON 商品.ID = 購入.商品番号;
Access 利用時の注意点②
SQL の世界標準: ON のあとで AND, OR が使える
Access だけ: ON のあとで AND, OR が使えない。
AND の代替で WHERE を使う
13
SELECT * FROM 商品
JOIN 購入
ON 商品.ID = 購入.商品番号 AND 購入.購入者 = 'X';
SELECT * FROM 商品
INNER JOIN 購入
ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'X';
いまから演習で行うこと、注意点
次の2つのテーブルを作成
Access での注意点】
SQLビューでは、SQL文を1つずつ実行
(複数まとめての一括実行ができない)
CREATE TABLE では、「実行」の後、画面が変化しない
が実行できている
INSERT INTO では、「実行」の後、確認表示が出る。そ
の後、画面が変化しないが実行できている 14
演習1.Access SQL
ビューを用いたテーブル定義
とデータの追加
【トピックス】
SQLビューを開く
SQL文の編集
create table
insert into
SQL文の実行
15
演習
1. パソコンを使用する
前もって Access をインストールしておくこと
2. Access 起動する
3. Access で、「空のデータベース」を選び、「作成」を
クリック.
16
4. テーブルツール画面が表示されることを確認
17
5. 次の手順で、SQLビューを開く.
18
②「デザイン」タブで、
表示」を展開し「SQL
ビュー」を選ぶ
①「作成」タブで、
クエリデザイン
をクリック
このような
表示が出た
ときは
閉じる」を
クリック
19
6. SQL ビューに、次の SQL を1つずつ入れ、「実行」ボタ
ンで、SQLを実行.結果を確認
CREATE TABLE 商品 (
ID INTEGER,
商品名 TEXT,
単価 INTEGER);
INSERT INTO 商品 VALUES(1, 'みかん', 50);
INSERT INTO 商品 VALUES(2, 'りんご', 100);
INSERT INTO 商品 VALUES(3, 'メロン', 500);
20
(前のページから続き)
CREATE TABLE 購入 (
購入者 TEXT,
商品番号 INTEGER);
INSERT INTO 購入 VALUES('X', 1);
INSERT INTO 購入 VALUES('X', 3);
INSERT INTO 購入 VALUES('Y', 2);
間違ってしまったときは、テーブルの削除
を行ってからやり直した方が早い場合がある
21
テーブルビューで、削除した
いテーブルを右クリックして、
削除
テーブルを削除するときは、
間違って必要なテーブルを削除しない
ように、十分に注意する!
(元に戻せない)
演習2.SQL による結合.
Access SQL ビューを使用.
【トピックス】
1. 結合
2. INNER JOIN
3. ON
4. WHERE
5. 複数の条件の指定
6. 結合条件のない結合
22
Access SQL ビューを用いた問い合わせ
Access SQLビュー開く
SQL 編集select, from, where を使用
: select * from テーブル名 where 1 = 1;
SQL 実行
実行の結果、データシートビューに画面が変わり、そこに
い合わせの結果が表示される
さらにSQL 文の編集、実行を続ける場合には、画面を SQL
ビューに切り替える
23
24
SQL 問い合わせ(クエリ)で使用する2つのビュ
SQL ビュー
SQL 文の作成編集 データシートビュー
問い合わせ(クエリ)
結果
実行
表示 + SQL ビュー
マウス操作でビューを切り替え
1. 次の手順で、SQLビューを開く.
25
②「デザイン」タブで、
表示」を展開し「SQL
ビュー」を選ぶ
①「作成」タブで、
クエリデザイン
をクリック
このような
表示が出た
ときは
閉じる」を
クリック
26
2. SQL ビューに、次の SQL を1つずつ入れ、「
」ボタンで、SQLを実行.結果を確認
1. 単純な表示
select * FROM 商品;
2. 結合
SELECT * FROM 商品
INNER JOIN 購入
ON 商品.ID = 購入.商品番号;
27
(前のページから続き)
3. 複数の条件の指定
SELECT * FROM 商品
INNER JOIN 購入
ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'X';
4. 表示される属性を絞り込む
SELECT 商品名, 購入者, 単価 FROM 商品
INNER JOIN 購入
ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'X';
28
(前のページから続き)
5. 今度は、購入者 Y に関するデータ取得
SELECT 商品名, 購入者, 単価 FROM 商品
INNER JOIN 購入
ON 商品.ID = 購入.商品番号 WHERE 購入.購入者 = 'Y';
3. 結果を確認したら、SQLビューに戻り、前の
ページで次の SQL 文に進む
29
表示」を展開し「SQLビュー」を選ぶ
演習3.実データによる演習.
Access SQL ビューを使用.
【トピックス】
1. 結合
2. INNER JOIN
3. ON
30
演習で行うこと
31
次の2つのテーブルを結合する
テーブル名:対象国
テーブル名:
米国成人調査データ
演習で使うデータベース
データの出典:Lichman, M. (2013).
UCI Machine Learning Repository [http://archive.ics.uci.edu/ml].
Irvine, CA: University of California, School of Information and Computer Science (米国)
32
このデータを使います
(演習では、特定の職業、学歴、性別、母国を差別的に見ないようにしてください)
米国成人調査データ
(1994年、米国における統計調査データのうち 32561 人分)
米国成人調査データ
33
34
SELECT * FROM 米国成人調査データ
INNER JOIN 対象国
ON 米国成人調査データ.母国= 対象国.名前;
結合によりインドと日本のデータを得る
次のSQLを実行し、結果を確認
リレーショナルデータベースの基礎
テーブル間の関連性を理解し、データをどのように組織化し
ているかを把握できる能力を習得します。
SQLコマンドの習得
基本的なSQLコマンド(SELECT, INSERT, CREATE TABLE
など)を反復練習します。これにより、必要なデータを効率
的に選択し、抽出する能力が養われます。
テーブルの結合とデータ取得
異なるテーブル間の結合方法を学びます。そしてONで結合
条件を設定するスキルを習得します。これにより、複数の
テーブルからデータを効率よく取得できるようになります。
実践的なSQLの応用
SQLの反復練習を通じて、理論的な知識と実際の操作との間
のギャップを埋め、問題解決のための効率的なデータベース
ソリューションのスキルを磨きます。
35