2010-11-26 17 views
0

こんにちは私は両方を比較した後、あるテーブルから行を取得する際に問題があります。両方のテーブルの詳細は次のとおりです: -MS Accessを使用したSql Joinクエリ

私はアクセスデータベースを使用しています。

今、私は表B.しかし、上記のクエリに等しくない場合、表AからのすべてのデータがIとして機能していない表示するこの

select a.a 
    from a a 
     , b b 
    where a.a <> b.b 

あるクエリの下に使用しています

TableA is having a data of numeric type (Field Name is A it is primary key) 
---------- 
Field A 
========== 
    1 
    2 
    3 
    4 
    5 

Table B is having data of numeric type (Field Name is A it is foreign key) 
-------- 
Field A 
======== 
    2 
    4 

記載されている。

この点についてお手伝いできますか?

よろしく、

Fawadムニール明快で試みで

+0

"私の説明どおりにクエリが機能していません" - 何が正確に機能していないのかを説明するケア? –

+0

「テーブルAのすべてのデータがテーブルBと等しくない」とはどういう意味ですか?テーブルAの各行について、クエリはテーブルBのすべての行と一致します。ここで、カラムaはカラムbとは異なります。 –

答えて

1

は、私がフィールドにテーブルのための大文字と小文字を使用しました:これは、すべてのレコードを表示します

Select A.a 
FROM A LEFT OUTER JOIN B ON A.a=B.b 
WHERE B.b is null 

AはBにはありません(私はそれがあなたが望むものと仮定します)。

アクセス外部ジョインで読み上げます。クエリデザイナでは、結合をダブルクリックし、「テーブルaのすべてのレコードとテーブルbの一致するレコードのみ」のようなものを選択します。

0

あなたの質問では、テーブルBのフィールドの名前は 'A'です。それで、あなたのクエリは次のようなものでなければなりません。

select a.a 
    from a, b 
    where a.a <> b.a 

しかし、私はこれがあなたの望むことをするかどうかはわかりません。私はあなたが

SELECT A.A 
    FROM A 
LEFT OUTER JOIN B 
    ON (B.A = A.A) 
WHERE B.A IS NULL 

はそれを試してみて、それが何をしたいんかどうかを確認してみてください。その場合には、テーブルBに一致する行を持たないテーブル内の行を見つけるためにしようとしていると思います

共有して楽しんでください。

0

Accessが構文を受け入れるかどうかはわかりませんが、ここではSQL Serverでどのように行うのですか。

select a.a 
    from TableA a 
    where a.a NOT IN (
     select b.a 
      from TableB b     
    ) 

、あるいは上記のように:

select a.a 
    from TableA a 
     left outer join TableB b on b.a = a.a 
    where b.a IS NULL 
0

あなたが達成しようとしているが、あなたのようなその音が表Aの行を見つけるの共通の問題を解決しようとしているものを完全には明らかではない。その表Bの関連データが欠落している場合は、試行した結合のセマンティクスを誤解しているように見えます。この場合、JOIN操作を理解することがリレーショナルデータベースを操作する上で重要であるため、2つの問題があります。

第1の問題に関しては、IN演算子を使用してサブクエリを表現する方法を研究してください。何かのように

... WHERE a NOT IN (SELECT a from b) 

2番目の問題に関しては、WHERE制限なしでクエリを試して、返されるものを参照してください。結合が何をしているのか分かると、WHERE制約を適用しても問題が解決されないのがなぜ分かりますか。

0

私が正しく理解していれば、どの列aにもBの任意の列bの値に含まれない値が含まれているAのすべての行を見たいと思っています。このデータはいくつかの方法で取得できます。私はNOT IN使用思う

は個人的に、最も明確である:

SELECT * FROM tableA WHERE columnA NOT IN 
    (SELECT columnB FROM tableB WHERE columnB IS NOT NULL) 

多くの人々は、フィルタリングJOINを好む:

SELECT tableA.* FROM tableA LEFT OUTER JOIN tableB 
    ON tableA.columnA = tableB.columnB WHERE tableB.columnB IS NULL 

はありませが、同様の変異体をEXISTS:

SELECT * FROM tableA WHERE columnA NOT EXISTS 
    (SELECT * FROM tableB WHERE columnB = tableA.columnA) 
関連する問題