STEP 4
クエリ(問い合わせ)
サンプルのAccessファイルを使用します。
このページの一番下からDBNew_Sample_Step4.zipをダウンロードして任意の場所で解凍してください。
1. サンプルファイルの構成
Students
| StudentID | Furigana | Name | Grade | Class | Height | ClubID | JHighID |
|---|---|---|---|---|---|---|---|
| 1 | 田中 太郎 | タカナ タロウ | 1 | A | 162 | 4 | 1 |
| 2 | 鈴木 花子 | スズキ ハナコ | 3 | B | 170 | 3 | 7 |
| 3 | 佐藤 健 | サトウ ケン | 2 | C | 158 | 1 | 1 |
| 4 | 高橋 愛 | タカハシ アイ | 1 | B | 165 | 1 | 1 |
| 5 | 伊藤 次郎 | イトウ ジロウ | 2 | A | 176 | 1 | 4 |
| 6 | 渡辺 美咲 | ワタナベ ミサキ | 3 | C | 154 | 2 | 6 |
| 8 | 中村 春菜 | ナカムラ ハルナ | 2 | B | 160 | 6 | 2 |
| 9 | 小林 大輔 | コバヤシ ダイスケ | 3 | C | 172 | 5 | 2 |
| 10 | 加藤 恵 | カトウ メグミ | 1 | B | 168 | 5 | 6 |
Clubs
| ClubID | ClubName |
|---|---|
| 1 | サッカー部 |
| 2 | 野球部 |
| 3 | バスケットボール部 |
| 4 | バレー部 |
| 5 | 書道同好会 |
| 6 | パソコン同好会 |
JHighs
| JHighID | JHighName |
|---|---|
| 1 | 北海道中学校 |
| 2 | 東北中学校 |
| 3 | 関東中学校 |
| 4 | 東海中学校 |
| 5 | 近畿中学校 |
| 6 | 中国中学校 |
| 7 | 四国中学校 |
| 8 | 九州中学校 |
E-R図(Clubs- Students - JHights)
Clubs
ClubID (PK)
ClubName
Students
StudentID (PK)
Name
Furigana
Grade
Class
Height
ClubID (FK → Clubs)
JHighID (FK → JHights)
JHights
JHightID (PK)
JHightName
2. 複数テーブルにまたがるクエリ
リレーショナルシップで関連付けられた主キー(PK) と外部キー(FK) を WHERE 句で結び付ける
(1) 生徒名と所属クラブ名を表示する
SELECT Students.Name,Clubs.ClubName
FROM Students,Clubs
WHERE Students.ClubID = Clubs.ClubID;
結果のビュー(仮想表)
| Name | ClubName |
|---|---|
| 佐藤 健 | サッカー部 |
| 高橋 愛 | サッカー部 |
| 伊藤 次郎 | サッカー部 |
| 渡辺 美咲 | 野球部 |
| 鈴木 花子 | バスケットボール部 |
| 田中 太郎 | バレー部 |
| 小林 大輔 | 書道同好会 |
| 加藤 恵 | 書道同好会 |
| 中村 春菜 | パソコン同好会 |
(2) 生徒名と出身中学校名を表示する
SELECT Students.Name,JHighs.JHighName
FROM Students,JHighs
WHERE Students.JHighID = JHighs.JHighID;
結果のビュー(仮想表)
| Name | JHighName |
|---|---|
| 田中 太郎 | 北海道中学校 |
| 佐藤 健 | 北海道中学校 |
| 高橋 愛 | 北海道中学校 |
| 中村 春菜 | 東北中学校 |
| 小林 大輔 | 東北中学校 |
| 伊藤 次郎 | 東海中学校 |
| 渡辺 美咲 | 中国中学校 |
| 加藤 恵 | 中国中学校 |
| 鈴木 花子 | 四国中学校 |
(3) 生徒名・クラブ名・出身中学校名を表示する
SELECT Students.Name,Clubs.ClubName,JHighs.JHighName
FROM Students,Clubs,JHighs
WHERE Students.ClubID = Clubs.ClubID
AND Students.JHighID = JHighs.JHighID;
結果のビュー(仮想表)
| Name | ClubName | JHighName |
|---|---|---|
| 田中 太郎 | バレー部 | 北海道中学校 |
| 鈴木 花子 | バスケットボール部 | 四国中学校 |
| 佐藤 健 | サッカー部 | 北海道中学校 |
| 高橋 愛 | サッカー部 | 北海道中学校 |
| 伊藤 次郎 | サッカー部 | 東海中学校 |
| 渡辺 美咲 | 野球部 | 中国中学校 |
| 中村 春菜 | パソコン同好会 | 東北中学校 |
| 小林 大輔 | 書道同好会 | 東北中学校 |
| 加藤 恵 | 書道同好会 | 中国中学校 |
(4) StudentID が 8 の生徒名・クラブ名・出身中学校名を表示する
SELECT Students.Name,Clubs.ClubName,JHighs.JHighName
FROM Students,Clubs,JHighs
WHERE Students.ClubID = Clubs.ClubID
AND Students.JHighID = JHighs.JHighID
AND StudentID = 8;
結果のビュー(仮想表)
| Name | ClubName | JHighName |
|---|---|---|
| 中村 春菜 | パソコン同好会 | 東北中学校 |
3. エイリアス(別名)
エイリアス(別名)とは、テーブルやフィールドに一時的な別名を付ける機能です。
FROM Students AS S
と書くと
Students → S
という意味になり、このSQLの中では Students の代わりに S が使えます。
例4のSQL 文は
SELECT
S.Name,
C.ClubName,
J.JHighName
FROM
Students AS S,
Clubs AS C,
JHighs AS J
WHERE
S.ClubID = C.ClubID
AND S.JHighID = J.JHighID
AND S.StudentID = 8;
のように記述でき、読みやすくなります。
処理内容や検索結果は変わりません。
| ファイル名 | サイズ (KB) | ダウンロード |
|---|---|---|
| DBNew_Sample_Step4.zip | 22 |