Accessテクニックのホームへ戻る

■ 過去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()));

 

ダウンロード (076.lzh)