Step5 様々な問い合わせ方法(1)
STEP 5

様々な問い合わせ方法(1)

サンプルのAccessファイルを使用します。
このページの一番下からDBNew_Sample_Step5.zipをダウンロードして任意の場所で解凍してください。

1. DISTINCT

重複するデータを1件にまとめて表示する場合に使う。

(1) 生徒がが所属しているクラブを抽出する。

SELECT
  C.ClubName
FROM 
  Students AS S,
  Clubs AS C
WHERE
  S.ClubID = C.ClubID
結果のビュー(仮想表):重複あり
ClubName
サッカー部
サッカー部
サッカー部
野球部
バスケットボール部
バレー部
書道同好会
書道同好会
パソコン同好会

(2) 生徒が所属しているクラブを重複なしで抽出する

SELECT DISTINCT
  C.ClubName
FROM 
  Students AS S,
  Clubs AS C
WHERE
  S.ClubID = C.ClubID

SELECT の次に DISTINCT を付けます

結果のビュー(仮想表):重複なし
ClubName
サッカー部
バスケットボール部
パソコン同好会
バレー部
書道同好会
野球部
2. LIKE

文字列データから指定した文字列を含むデータを抽出する。

(1) 生徒名の先頭が「中」である生徒の生徒名を抽出する

SELECT Name FROM Students WHERE Name Like '中*';
結果のビュー(仮想表)
Name
中村 春菜

(2) 生徒名に「中」が踏まれる生徒の生徒名を抽出する

SELECT Name FROM Students WHERE Name Like '**';
結果のビュー(仮想表)
Name
田中 太郎
中村 春菜
Accessのワイルドカード

ワイルドカードとは、検索対象の文字列に対して「一部があいまい」な条件を指定するために使う記号です。

主に LIKE と組み合わせて使用され、部分一致検索やパターンマッチングを行う際に用いられます。

ただし、Accessと一般的なSQLでは違いがあります。

Access 一般的SQL 意味 検索対象の例
*(アスタリスク)%(パーセント)0文字以上の任意の文字列LIKE '田中*'LIKE '田中%' 田中一郎, 田中花子
?_(アンダーバー)任意の1文字LIKE '?田中' LIKE '_田中'佐田中, 小田中

Accessの設定により、%_ を使う SQL 構文を有効にすることができます。

3. ORDER BY

特定の列に基づいて並べ替える。

表示順は 昇順(ASC)または降順(DESC)で制御する。

省略すると 昇順(ASC)が適応される。

SELECT 列名1, 列名2, ... 
FROM テーブル名
Order By 並べ替え対象の列 [ASC|DESC];

(1) StudentsのデータをGrade(学年)の昇順で抽出する

SELECT * FROM Students Order By Grade ASC;
結果のビュー(仮想表)
StudentID Name Furigana Grade Class Height ClubID JHighID
10 加藤 恵 カトウ メグミ 1 B 168 5 6
4 高橋 愛 タカハシ アイ 1 B 165 1 1
1 田中 太郎 タナカ タロウ 1 A 162 4 1
8 中村 春菜 ナカムラ ハルナ 2 B 160 6 2
5 伊藤 次郎 イトウ ジロウ 2 A 176 1 4
3 佐藤 健 サトウ ケン 2 C 158 1 1
9 小林 大輔 コバヤシ ダイスケ 3 C 172 5 2
6 渡辺 美咲 ワタナベ ミサキ 3 C 154 2 6
2 鈴木 花子 スズキ ハナコ 3 B 170 3 7

(2) Name(生徒名)とHeight(身長)をHeightの降順で抽出する

SELECT Name,Height FROM Students Order By Height DESC;
結果のビュー(仮想表)
Name Height
伊藤 次郎 176
小林 大輔 172
鈴木 花子 170
加藤 恵 168
高橋 愛 165
田中 太郎 162
中村 春菜 160
佐藤 健 158
渡辺 美咲 154
4. BETWEEN

指定した2つの値の範囲に含まれるレコードを抽出する

数値、日付、文字列などに使用可能

以上かつ以下」の検索を簡潔に記述できる

SELECT 列名1, 列名2, ... 
FROM テーブル名
WHERE 列名 BETWEEN 最小値 AND 最大値;

(1) Heigh(身長)が160cm以上かつ170cm 以下を昇順で抽出する

SELECT * FROM Students WHERE Height BETWEEN 160 AND 170 ORDER BY Height;
結果のビュー(仮想表)
StudentID Name Furigana Grade Class Height ClubID JHighID
8 中村 春菜 ナカムラ ハルナ 2 B 160 6 2
1 田中 太郎 タナカ タロウ 1 A 162 4 1
4 高橋 愛 タカハシ アイ 1 B 165 1 1
10 加藤 恵 カトウ メグミ 1 B 168 5 6
2 鈴木 花子 スズキ ハナコ 3 B 170 3 7

A >= 値 AND 値 <= Bと同じ意味。

WHERE Height >= 160 AND Height <= 170;

BETWEEN を使うことでSQL文を簡潔に表現できます。

5. IN(NOT IN)

IN は、指定した複数の値と一致するデータを抽出する。
NOT IN は、指定した値「以外」のデータを抽出する。

SELECT 列名1, 列名2, ... 
FROM テーブル名
WHERE 列名 IN ( 値1, 値2, ... );

SELECT 列名1, 列名2, ... 
FROM テーブル名
WHERE 列名 NOT IN ( 値1, 値2, ... );

(1) Grade(学年)が 1 または 3 のデータを Grade の降順で抽出する

SELECT * FROM Students WHERE Grade IN(1,3) ORDER BY Grade DESC;
結果のビュー(仮想表)
StudentID Name Furigana Grade Class Height ClubID JHighID
9 小林 大輔 コバヤシ ダイスケ 3 C 172 5 2
6 渡辺 美咲 ワタナベ ミサキ 3 C 154 2 6
2 鈴木 花子 スズキ ハナコ 3 B 170 3 7
10 加藤 恵 カトウ メグミ 1 B 168 5 6
4 高橋 愛 タカハシ アイ 1 B 165 1 1
1 田中 太郎 タナカ タロウ 1 A 162 4 1

(2) Grade(学年)が 1 または 3 ではないデータを Grade の降順で抽出する

SELECT * FROM Students WHERE Grade NOT IN(1,3) ORDER BY Grade DESC;
結果のビュー(仮想表)
StudentID Name Furigana Grade Class Height ClubID JHighID
8 中村 春菜 ナカムラ ハルナ 2 B 160 6 2
5 伊藤 次郎 イトウ ジロウ 2 A 176 1 4
3 佐藤 健 サトウ ケン 2 C 158 1 1

ファイル名 サイズ (KB) ダウンロード
DBNew_Sample_Step5.zip 22

戻る


© 2026 - Blazor 情処の味方

サポーターズ
Thread Light
An unhandled error has occurred. Reload 🗙