Prerequisiti: In MS Access 2010 creare le seguenti tabelle:Accesso MS: la clausola WHERE-EXISTS non funziona sulle viste?
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);
Crea anche una vista chiamata BView che utilizza la seguente istruzione SELECT:
SELECT A.ID FROM ATBL AS A WHERE A.ID = 1 OR A.ID = 2
Ora BView dovrebbe avere lo stesso contenuto BTBL. Tuttavia i seguenti due query restituiranno risultati diversi:
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)
La prima query restituisce due record (1 e 2), ma la seconda query restituisce tutti i record da ATBL. Cosa c'è che non va qui? Mi sto perdendo qualcosa?
FWIW il codice funziona come previsto su SQL Server. – onedaywhen