スポンサーリンク

2007-07-31

Tips49 - SQL文 合計値を取得する SUM関数

dim SQL as String
dim rs As Recordset
SQL = " SELECT SUM(フィールド名) AS 名前 FROM テーブル名 "
Set rs = CurrentDb.OpenRecordset(SQL)
指定フィールドの合計値を返します。

例: SQL = " SELECT SUM( 金額 ) AS 売上合計金額 FROM 売上日報 WHERE 商品ID = 3 "
売上日報テーブルの商品IDが3の金額の合計を取得します。
合計値は売上合計金額の名前になります。

2007-07-30

Tips48 - SQL文 最大値を取得する MAX関数

dim SQL as String
dim rs As Recordset
SQL = " SELECT MAX(フィールド名) AS 名前 FROM テーブル名 "
Set rs = CurrentDb.OpenRecordset(SQL)
指定フィールドの最大値を返します。

例: SQL = " SELECT MAX( 国語 ) AS 国語点数 FROM 成績表 WHERE 組 = 3 "
成績表テーブルの3組から国語フィールドの最大値を取得します。

2007-07-29

Tips47 - SQL文 最小値を取得する MIN関数

dim SQL as String
dim rs As Recordset
SQL = " SELECT MIN(フィールド名) AS 名前 FROM テーブル名 "
Set rs = CurrentDb.OpenRecordset(SQL)
指定フィールドの最小値を返します。

例: SQL = " SELECT MIN( 得点 ) AS 得点最小値 FROM スコア WHERE 性別 = '男' "
スコアテーブルの得点フィールドから最小値を取得します。

2007-07-28

Tips46 - SQL文 レコードをカウントする COUNT関数

dim SQL as String
dim rs As Recordset
SQL = " SELECT COUNT(フィールド名) AS 名前 FROM テーブル名 "
Set rs = CurrentDb.OpenRecordset(SQL)
NULL値以外のフィールドをカウントし、その結果のカウント数を「名前」で返します。
フィールド名に、*(アスタリスク)を指定していするとすべてのレコード数を返します。

例1: SQL = " SELECT COUNT( 受付 ) AS 受付合計 FROM 来客管理 WHERE 日付 Between #2007/01/01# AND #2007/04/01# "
指定期間内の受付カウント数を「受付合計」の名前で取得します。

例1: SQL = " SELECT COUNT( * ) AS 遅刻 FROM 社員管理 "
全遅刻数を取得します。

2007-07-27

Tips45 - SQL文 演算子の優先順位

演算子は下記の順で行われます。
1.算術演算子
2.比較演算子
3.論理演算子

算術演算子は下記の順で行われます。
1. [ ^ ] 指数演算子(べき乗)
2. [ - ] 単項マイナス(符号反転)
3. [ * , / ] 乗算,除算
4. [ \ ] 整数除算
5. [ Mod ] 剰余
6. [ + , - ] 加算、減算
7. [ & ] 文字列の結合

比較演算子には優先順位はありません。左から右になります。
[ < ] 小なり
[ > ] 大なり
[ <= ] 以下
[ >= ] 以上
[ = ] 等しい
[ <> ] 等しくない

論理演算子は下記の順で行われます。
1. [ NOT ] 論理否定
2. [ AND ] 論理積
3. [ OR ] 論理和
4. [ XOR ] 排他的論理和
5. [ EQV ] 論理等価
6. [ IMP ] 論理包含

2007-07-26

Tips44 - SQL文 計算結果で並べ替えレコードを抽出する

計算結果で並べ替えるにはORDER BY に計算式を設定します。

例1: SQL = "SELECT 製品No FROM 製品マスター ORDER BY 単価 * 在庫数 "
この場合、「単価 * 在庫数」を昇順で製品Noを取り出します。

例2: SQL = "SELECT 製品No , 単価 * 在庫数 AS 在庫金額 FROM 製品マスター ORDER BY 単価 * 在庫数 "
この場合、「単価 * 在庫数」を昇順で製品Noと計算結果の「在庫金額」を取り出します。
ORDER BY に計算結果の「在庫金額」を指定することはできません。

2007-07-25

Tips43 - SQL文 複数フィールドを昇順・降順の両方でレコードを抽出する

降順で並べ替えたいフィールドに「DESC」を付けます。
複数のフィールドは半角のコンマ(,)で区切ります。

例: SQL = "SELECT 製品No FROM 製品マスター ORDER BY 製品名 DESC , 製品コード , 単価 "
この場合、「製品名」を降順で、次に「製品コード」次に「単価」の順で製品Noを取り出します。

2007-07-24

Tips42 - SQL文 複数フィールドで並べ替えレコードを抽出する

SQL = "SELECT フィールド名 FROM テーブル名 ORDER BY 並べ替えフィールド名1 , 並べ替えフィールド名2 , ・・・ "
複数のフィールドで並べ替えるには、半角のコンマ(,)で並べ替えしたい順に指定します。

例: SQL = "SELECT 製品No FROM 製品マスター ORDER BY 製品名,製品コード,単価 "
この場合、「製品名」次に「製品コード」次に「単価」の順で製品Noを取り出します。

2007-07-23

Tips41 - SQL文 降順に並べ替えてレコードを抽出する

降順に並べ替えるには、「 ORDER BY 並べ替えフィールド名 DESC 」 のように「DESC」を付けます。
DESCを付けないと昇順になります。

例: SQL = "SELECT 製品No FROM 製品マスター ORDER BY 重量 DESC "
この場合、重量を降順で製品Noを取り出します。

2007-07-22

Tips40 - SQL文 並べ替えてレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 ORDER BY 並べ替えフィールド名 並べ替え順 "
Set rs = CurrentDb.OpenRecordset(SQL)
並べ替えは、ORDER BY を使います。
並べ替え順は、昇順がASC、降順がDESCになります。
省略すると昇順になります。

例: SQL = "SELECT 製品No FROM 製品マスター ORDER BY 単価 "
この場合、単価を昇順で製品Noを取り出します。

2007-07-21

Tips39 - SQL文 「Between And 」を使い計算結果の範囲のレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE 計算式 Between 値1 And 値2 "
Set rs = CurrentDb.OpenRecordset(SQL)
計算式の結果から、値1 から 値2 の範囲のレコードを返します。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 / (身長 * 身長 ) BETWEEN 23 AND 25 "
この場合、体重 / (身長 * 身長 )のBMIが23~25の学生IDを抽出します。

これを「AND」にすると
例: SQL = "SELECT 学生ID 学生名簿 WHERE 体重 / (身長 * 身長 ) >= 22 AND 体重 / (身長 * 身長 ) <= 25"
になります。

2007-07-20

Tips38 - SQL文 「Between And 」を使い文字の範囲のレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between '文字1' And '文字2' "
Set rs = CurrentDb.OpenRecordset(SQL)
文字1 から 文字2 の範囲のレコードを返します。

抽出する文字が1文字でない場合は
SQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between '文字1' And '文字2' AND フィールド名 <> '文字2' "
このように先頭文字が、文字1 から 文字2未満 の範囲になるようにします。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE フリガナ BETWEEN 'ア' AND 'サ' AND フリガナ <> 'サ' "
この場合、フリガナが「ア」~「コ」の学生IDを抽出します。

これを「AND」にすると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE フリガナ >= 'ア' AND フリガナ < 'サ' "
となります。

2007-07-19

Tips37 - SQL文 「Between And 」を使い日付の範囲のレコードを抽出する

dim SQL as StringDim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between #日付1# And #日付2# "
Set rs = CurrentDb.OpenRecordset(SQL)
日付1 から 日付2 の範囲のレコードを返します。
例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 誕生日 Between #1990/01/01# AND #1990/04/01# "
この場合、誕生日が1990年01月01日~1990年04月01日の範囲の学生IDを抽出します。

これを「AND」にするとSQL = "SELECT 学生ID FROM 学生名簿 WHERE 誕生日>=#1990/01/01# AND 誕生日<=#1990/04/01# "
となります。

2007-07-18

Tips36 - SQL文 「Not」と「Between And 」を使い範囲外のレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE Not フィールド名 Between 値1 And 値2 "
Set rs = CurrentDb.OpenRecordset(SQL)
値1 から 値2 の範囲外のレコードを返します。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 Not Between 80 AND 90 "
この場合、体重が80以上、90以下の範囲外の学生IDを抽出します。

これを「OR」にすると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 <> 90 "
となります。

2007-07-17

Tips35 - SQL文 「Between And 」を使い範囲内のレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between 値1 And 値2 "
Set rs = CurrentDb.OpenRecordset(SQL)
値1 から 値2 の範囲内にあるレコードを返します。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 Between 80 AND 90 "
この場合、体重が80以上から90以内の学生IDを抽出します。

これを「AND」にすると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 >= 80 AND 体重 <=90 "
となります。

2007-07-16

Tips34 - SQL文 「NOT」と「IN」を使い複数の指定値以外のレコードを抽出する

dim SQL as String
Dim rs As RecordsetSQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 NOT IN(値1 , 値2 , ・・・・・) "
Set rs = CurrentDb.OpenRecordset(SQL)
「NOT」と「IN」を組み合わせると「値1 と 値2 と ・・・・ 以外の」データを返します。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 NOT IN ( '愛知' , '東京' , '大阪' ) "
この場合、出身が 愛知 と 東京 と 大阪 以外の学生IDを抽出します。
これをANDに書き換えると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 <> '愛知' AND 出身 <> '東京' AND 出身 <> '大阪' "
になります。

2007-07-15

Tips33 - SQL文 「IN」を使い複数の指定値と一致するレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 IN(値1 , 値2 , ・・・・・) "
Set rs = CurrentDb.OpenRecordset(SQL)
「IN」は「OR」と同じ使い方ができますが、構文が分かり易くなります。
「値1 か 値2 か ・・・・ のどれかに合う」データを返します。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 IN ( '香川' , '島根' , '福島' ) "
この場合、出身が 香川 か 島根 か 福島 の学生IDを抽出します。
これをORに書き換えるとSQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 = '香川' OR 出身 = '島根' OR 出身 = '福島' "になります。
IN演算子を使うことで簡潔になっていることがよく分かります。

2007-07-14

Tips32 - SQL文 「NOT」を使い条件以外のレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE NOT 条件式 "
Set rs = CurrentDb.OpenRecordset(SQL)
「NOT」は条件式の論理否定です。
「条件式 以外の」、「条件式 ではない」と言われます。
条件式が「True (真)」の時は「False (偽)」のデータを返し、「False (偽)」の時は「True (真)」のデータを返します。

例1: SQL = "SELECT 学生ID FROM 学生名簿 WHERE NOT 体重<=80 "
この場合、体重が80を超える学生IDを抽出します。

例2: SQL = "SELECT 学生ID FROM 学生名簿 WHERE NOT 名前 LIKE '田' "
この場合、名前に「田」の文字が含まれない学生IDを抽出します。

2007-07-13

Tips31 - SQL文 「XOR」を使い複数条件のどちらかに合うレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE 条件式1 XOR 条件式2 "
Set rs = CurrentDb.OpenRecordset(SQL)
「XOR」は2つの条件式の排他的論理和です。
「A か B のどちらか片方」と言われます。
条件式1 か 条件式2 のどちらかが「True (真)」の時のみ「True (真)」のデータになります。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重<=60 XOR 身長<=180 "
この場合、体重が60以下で身長が180以下でないか、体重が60以下でなく身長が180以下の学生IDを抽出します。

2007-07-12

Tips30 - SQL文 「OR」を使い複数条件のどれかに合うレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE 条件式1 OR 条件式2 "
Set rs = CurrentDb.OpenRecordset(SQL)
「OR」は2つの条件式の論理和です。
「A か B」、「A または B」、「A あるいは B」などと言われます。
条件式1 か 条件式2 のどちらかが「True (真)」のデータになります。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重<=60 OR 身長<=165 "
この場合、体重が60以下か身長が165以下の学生IDを抽出します。
さらに 体重<=60 OR 身長<=165 OR 血液型='A'のようにさらに追加することもできます。

2007-07-11

Tips29 - SQL文 「AND」を使い複数条件と一致するレコードを抽出する

dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名 WHERE 条件式1 AND 条件式2 "
Set rs = CurrentDb.OpenRecordset(SQL)
「AND」は2つの条件式の論理積です。
「A と B」、「A かつ B」、「A および B」などと言われます。
条件式1 と 条件式2 の両方が「True (真)」のデータになります。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重>=60 AND 身長<=165 " この場合、体重が60以上で身長が165以上の学生IDを抽出します。 さらに 体重>=60 AND 身長<=165 AND 血液型='A'
のようにさらに追加することもできます。

2007-07-10

Tips28 - SQL文 計算条件に合うレコードを抽出する

dim SQL as String
Dim rs As Recordset
例: SQL = "SELECT 学生ID , 体重 / (身長 * 身長 ) AS bmi FROM 学生名簿 WHERE 体重 / (身長 * 身長 ) > 22 "
Set rs = CurrentDb.OpenRecordset(SQL)
例のように計算結果で抽出するには、WHEREで計算式を指定します。
抽出部分でASを使い同じ式を列見出しとして指定していますが、この列見出しは使用せずに計算式を指定します。

2007-07-09

Tips27 - SQL文 日付条件に合うレコードを抽出する

dim SQL as String
Dim rs As Recordset
例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 誕生日='#1987/05/25#' "
Set rs = CurrentDb.OpenRecordset(SQL)
誕生日が「1987年05月25日」の学生IDをレコードセットに取り出します。
日付の場合、#(シャープ)で囲みます。

2007-07-08

Tips26 - SQL文 文字条件に合うレコードを抽出する

dim SQL as String
Dim rs As Recordset
例: SQL = "SELECT 名前 FROM 学生名簿 WHERE 苗字='大木' "
Set rs = CurrentDb.OpenRecordset(SQL)
苗字が「大木」の名前をレコードセットに取り出します。
文字列の場合、'(単引用符)で囲みます。

2007-07-07

Tips25 - SQL文 数値条件に合うレコードを抽出する

dim SQL as String
Dim rs As Recordset
例1: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重>70"
Set rs = CurrentDb.OpenRecordset(SQL)
体重が70を超える学生IDをレコードセットに取り出します。

例2: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重>70 AND 身長<=165"
Set rs = CurrentDb.OpenRecordset(SQL)
体重が70で身長が165以下の学生IDをレコードセットに取り出します。

2007-07-06

Tips24 - SQL文 指定条件に合うレコードを抽出する

Dim SQL as String
Dim rs As Recordset
SQL = "SELECT * FROM テーブル名 WHERE 条件式"
Set rs = CurrentDb.OpenRecordset(SQL)
条件を設定するには、WHEREを使います。
条件式には、比較演算子(=、>、<=、>、>=、<>、Like)、
論理演算子(And,Or,Xor,Not)などが使えます。

2007-07-05

Tips23 - SQL文 フィールドに式を設定し値を抽出する

dim SQL as String
Dim rs As Recordset
例: SQL = "SELECT 国語 + 数学 + 英語 AS 合計点 FROM テーブル名"
Set rs = CurrentDb.OpenRecordset(SQL)
上のようにフィールド名に式を設定し、ASで列見出し名を指定します。

2007-07-04

Tips22 - SQL文 全てのフィールドの値を抽出する

Dim SQL as String
Dim rs As Recordset
SQL = "SELECT * FROM テーブル名"
Set rs = CurrentDb.OpenRecordset(SQL)
フィールド名に * (アスタリスク)を使用すると、全フィールドデータを抽出できます。

2007-07-03

Tips21 - SQL文 複数のフィールドの値を抽出する

Dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名1,フィールド名2 AS 別名 FROM テーブル名"
Set rs = CurrentDb.OpenRecordset(SQL)
このようにフィールド名をコンマで区切り指定します。
順番はここで指定したフィールド順になるので、入れ替えて取り出したい時にも使用できます。

2007-07-02

Tips20 - SQL文 別名でフィールドの値を抽出する

Dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 AS 別名 FROM テーブル名"
Set rs = CurrentDb.OpenRecordset(SQL)
フィールド名に別名を付けるには「AS」を使います。

例:SQL = "SELECT name AS 名前 FROM T_顧客"
nameフィールドを名前に列名を変更しています。

2007-07-01

Tips19 - SQL文 フィールドの値を抽出する

Dim SQL as String
Dim rs As Recordset
SQL = "SELECT フィールド名 FROM テーブル名"
Set rs = CurrentDb.OpenRecordset(SQL)
テーブル名からフィールド名の全レコードを取り出します。

例:SQL = "SELECT 名前 FROM T_顧客"
顧客テーブルから全レコードの名前を取り出します。