MS Access: WHERE-EXISTS-clause не работает в представлениях?

Предварительные условия: В 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);

Также создайте представление BVIEW, которое использует следующий оператор SELECT:

SELECT A.ID FROM ATBL AS A WHERE A.ID = 1 OR A.ID = 2

Теперь BVIEW должно иметь то же содержимое, что и BTBL. Тем не менее, следующие два запроса возвращают разные результаты:

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)

Первый запрос возвращает две записи (1 и 2), но второй запрос возвращает все записи из ATBL. Что здесь не так? Я что-то упустил?

8
задан Gangnus 31 January 2012 в 15:06
поделиться