■ 過去3年間注文のなかった得意先を抽出する (2000, 2002, 2003,2007)
得意先テーブルと受注テーブルから過去3年間注文のなかった得意先を抽出するクエリを作成します。過去3年間注文がなかったかどうか調べるには、受注テーブルの得意先IDを検索します。
1. 新規データベース作成
Accessを起動したら、ツールバーから新規作成のアイコン
をクリックして、作業フォルダworkに新規データベースW076.mdbを作成します。
2. テーブルをインポート
メニューバーから[ファイル]→[外部データの取り込み]→[インポート]を選択します。「インポート」のダイアログが表示されたら、076.mdb(このページの最後からダウンロードすることができます)を選択して[インポート]ボタンをクリックします。
「オブジェクトのインポート」が表示されたら、[テーブル]タブから[tbl得意先]と[tbl受注]をクリックして選択します。[OK]ボタンをクリックしてインポートを開始します。インポートが完了すると、データベースウィンドウにインポートしたテーブルが表示されます。
3. 新規クエリ作成
データベースウィンドウのオブジェクトから[クエリ]をクリックして選択したら、新規オブジェクトのショートカットから[デザインビューでクエリを作成する]をダブルクリックします。「テーブルの表示」ダイアログが表示されたら、何も選択しないで[閉じる]ボタンをクリックしてダイアログを閉じます。
クエリのデザインビューが表示されたら、ツールバーからSQLビューのアイコン
をクリックします。SQLビューが表示されたら、次のSQLステートメントを入力します。
SELECT tbl得意先.得意先ID, tbl得意先.得意先名
FROM tbl得意先
WHERE tbl得意先.得意先ID NOT IN
(SELECT tbl受注.得意先ID FROM tbl受注 WHERE tbl受注.受注日 > DateAdd("yyyy",-3,Date()));
ツールバーから上書き保存のアイコン
をクリックしたら「qry過去3年間注文のない得意先を抽出」の名称で保存します。

図 新規クエリを作成したら「qry過去3年間注文のない得意先を抽出」の名称で保存
4. サブクエリ実行
ツールバーから実行のアイコン
をクリックして、サブクエリを実行します。データシートに過去3年間注文がなかった得意先が1件表示されます。

図 過去3年間注文がなかった得意先を表示する
●解説
得意先テーブルの得意先が、過去3年間注文がなかったか調べるには受注テーブルの得意先IDを検索します。受注テーブルから過去3年の間に注文を受けた得意先IDを抽出するには、次のようなSELECTステートメントを作成します。
SELECT tbl受注.得意先ID
FROM tbl受注
WHERE tbl受注.受注日 > DateAdd("yyyy",-3,Date()));
3年前の日付を計算するには、DateAdd()関数を使用します。DateAdd(“yyyy”, -3, Date())のように記述すると、システム日付を基準に3年前の日付が算出されます。2年前の日付を計算するには、DateAdd(“yyyy”, -2, Date())のように記述します。
このクエリに含まれていない得意先IDを抽出するには、NOT INを使用して次のようなWHERE句を作成します。
WHERE
tbl得意先.得意先ID NOT IN
(SELECT
tbl受注.得意先ID FROM tbl受注 WHERE tbl受注.受注日 >
DateAdd("yyyy",-3,Date()));
WHERE句の得意先ID NOT IN (SELECT...)は、サブクエリに含まれていない得意先を抽出することを意味します。WHERE句に、得意先ID IN (SELECT...)のように記述すると、サブクエリに含まれている得意先が抽出されます。
後は、NOT INとサブクエリでWHERE句を追加すれば、目的のクエリが完成します。
完成したサブクエリ:
SELECT tbl得意先.得意先ID, tbl得意先.得意先名
FROM tbl得意先
WHERE tbl得意先.得意先ID NOT IN
(SELECT tbl受注.得意先ID FROM tbl受注 WHERE tbl受注.受注日 > DateAdd("yyyy",-3,Date()));