Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルSQLによる組合せチェックについて
記事No10702
投稿日: 2011/03/28(Mon) 16:31
投稿者もち
解決済: ON
OS: XP
Access Version: 2003



いつもお世話になっております。

以下の処理をクエリで実現したいと考えておりますが、
やり方が分かりません。


[目的]
メインTABLE の 種別,項目1,項目2 の組合せが正しく設定されているか
マスタTABLE を用いてチェックし、組合せが間違えているものを抽出する



[メイン]

ID 項目01 項目02 種別 項目1 項目2
01 ○○○ ○○○ A 1 13
02 ○○○ ○○○ A 1 12
03 ○○○ ○○○ B 4 31


[マスタ]
種別 項目1 項目2
A 1 11
A 1 12
A 2 21
B 3 31
B 4 41
B 4 42
C 5 51
C 5 52
C 6 61



上記例の場合、「01」「03」が抽出されるようにしたいです。


副問合せを使用して、以下のようなSQLを組んでみましたが
副問合せの結果が0件の場合にうまく行きませんでした。

SELECT * FROM メイン
WHERE 項目2 Not In
(SELECT 項目2 FROM マスタ
WHERE 種別 = メイン.種別
AND 項目1 = メイン.項目1);



申し訳ありませんが、ご教示よろしくお願い致します。

タイトルRe: SQLによる組合せチェックについて
記事No10704
投稿日: 2011/03/28(Mon) 17:53
投稿者MAR
解決済: ON
不一致クエリを使えばいいんじゃないかな

タイトルRe: SQLによる組合せチェックについて
記事No10706
投稿日: 2011/03/29(Tue) 11:56
投稿者Hank
解決済: ON
>  WHERE 項目2 Not In
>                  (SELECT 項目2 FROM マスタ 
>                    WHERE  種別 = メイン.種別
>                      AND 項目1 = メイン.項目1);

WHERE Not Exists (SELECT 0
                    FROM マスタ
                   WHERE 種別 = メイン.種別
                         AND 項目1 = メイン.項目1
                         AND 項目2 = メイン.項目2)

タイトルRe^2: SQLによる組合せチェックについて
記事No10709
投稿日: 2011/03/29(Tue) 16:30
投稿者もち
解決済: ON
ご返信ありがとうございます

「不一致クエリ」ではうまく行かなかったため、「Exists」を使用してみました
ご教示頂いたSQLに条件を足して、マスタに存在しない値は抽出しないようにしました

WHERE (Not Exists (SELECT 0
                    FROM マスタ
                   WHERE 種別 = メイン.種別
                         AND 項目1 = メイン.項目1
                         AND 項目2 = メイン.項目2))
  AND (メイン.項目1 = 項目1)


ありがとうございました

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る