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

■ 一度も注文がなかった得意先を抽出する 2000, 2002, 2003,2007

 

得意先テーブルと受注テーブルから今までに1度も注文がなかった得意先を抽出するクエリを作成します。今までに注文がなかったかどうか調べるには、受注テーブルの得意先IDを検索します。

 

1. 新規データベース作成

Accessを起動したら、ツールバーから新規作成のアイコンをクリックして、作業フォルダworkに新規データベースW075.mdbを作成します。

 

2. テーブルをインポート

メニューバーから[ファイル][外部データの取り込み][インポート]を選択します。「インポート」のダイアログが表示されたら、075.mdb(このページ最後からダウンロードすることができます)を選択して[インポート]ボタンをクリックします。

 

オブジェクトのインポート」が表示されたら、[テーブル]タブから[tbl得意先][tbl受注]をクリックして選択します。[OK]ボタンをクリックしてインポートを開始します。インポートが完了すると、データベースウィンドウにインポートしたテーブルが表示されます。

 

3. 新規クエリ作成

データベースウィンドウのオブジェクトから[クエリ]をクリックして選択したら、新規オブジェクトのショートカットから[デザインビューでクエリを作成する]をダブルクリックします。「テーブルの表示」ダイアログが表示されたら、何も選択しないで[閉じる]ボタンをクリックしてダイアログを閉じます。

 

クエリのデザインビューが表示されたら、ツールバーからSQLビューのアイコンをクリックします。SQLビューが表示されたら、次のSQLステートメントを入力します。

 

SELECT tbl得意先.得意先ID, tbl得意先.得意先名

FROM tbl得意先

WHERE NOT EXISTS

(SELECT 得意先ID FROM tbl受注 WHERE tbl受注.得意先ID=tbl得意先.得意先ID);

 

ツールバーから上書き保存のアイコンをクリックしたら「qry注文のなかった得意先を抽出の名称で保存します。

 

新規クエリを作成したら「qry注文のなかった得意先を抽出」の名称で保存

 

 

4. サブクエリ実行

ツールバーから実行のアイコンをクリックして、サブクエリを実行します。データシートに今まで1度も注文がなかった得意先が1件表示されます。

 

今まで1度も注文がなかった得意先を表示する

 

●解説

 

得意先テーブルの得意先が今までに注文がなかったか調べるには、受注テーブルの得意先IDを検索します。WHERE句で受注テーブルと得意先テーブルを結合するには、次のようなSELECTステートメントを作成します。

 

SELECT 得意先ID FROM tbl受注, tbl得意先 WHERE tbl受注.得意先ID=tbl得意先.得意先ID

 

SELECTステートメントをネストさせるときは、FROM句から得意先テーブルを削除して、次のように書き換えます。

 

SELECT 得意先ID FROM tbl受注 WHERE tbl受注.得意先ID=tbl得意先.得意先ID

 

これで、親のSELECTステートメントで抽出した得意先IDが受注テーブルに存在するか調べることができます。後は、NOT EXISTSとサブクエリを組み合わせてWHERE句を追加すると、今までに1度も注文がなかった得意先を抽出することができます。

 

完成したサブクエリ:

 

SELECT tbl得意先.得意先ID, tbl得意先.得意先名

FROM tbl得意先

WHERE NOT EXISTS

(SELECT 得意先ID FROM tbl受注 WHERE tbl受注.得意先ID=tbl得意先.得意先ID);

 

Tip

LEFT JOINで今までに1度も注文がなかった得意先を抽出する

 

得意先テーブルから今までに1度も注文がなかった得意先を抽出するには、サブクエリを使用する代わりにLEFT JOINを使用する方法もあります。この場合、次のようなSELECTステートメントを作成します。

 

SELECT tbl得意先.得意先ID, tbl得意先.得意先名

FROM tbl得意先 LEFT JOIN tbl受注 ON tbl得意先.得意先ID = tbl受注.得意先ID

WHERE (((tbl受注.得意先ID) Is Null));

 

 

ダウンロード (075.lzh)