前提条件:MS Access 2010で、次のテーブルを作成します。
CREATE TABLE ATBL(ID INT);
INSERT INTO ATBL(ID) VALUES (1);
INSERT INTO ATBL(ID) VALUES (2);
INSERT INTO ATBL(ID) VALUES (3);
CREATE TABLE BTBL(ID INT);
INSERT INTO BTBL(ID) VALUES (1);
INSERT INTO BTBL(ID) VALUES (2);
また、次のSELECTステートメントを使用するBVIEWというビューを作成します。
SELECT A.ID FROM ATBL AS A WHERE A.ID = 1 OR A.ID = 2
これで、BVIEWの内容はBTBLと同じになります。それでも、次の2つのクエリは異なる結果を返します。
SELECT A.ID FROM ATBL AS A WHERE EXISTS (SELECT 1 FROM BTBL AS B WHERE B.ID=A.ID)
SELECT A.ID FROM ATBL AS A WHERE EXISTS (SELECT 1 FROM BVIEW AS B WHERE B.ID=A.ID)
最初のクエリは2つのレコード(1と2)を返しますが、2番目のクエリはATBLからすべてのレコードを返します。ここで何が問題になっていますか?私は何かが足りないのですか?