Какую базу данных вы используете? Вы уверены, что intersect
поддерживается? Я попробовал ваш запрос в Oracle (изменив имена таблиц на что-то, соответствующее моей БД), и он работал нормально.
EDIT:
Поскольку вы подтвердили, что используете MS-Access, то ясно, что INTERSECT является проблемой, поскольку он не поддерживается с MS-Access: http://www.access -programmers.co.uk / forums / archive / index.php / t- 86531.html
EDIT2:
Это не проверено, но основная идея заключается в том, что вам нужно найти все строки в вашем первом запросе, которые существуют во втором запросе. Для этого вам нужно будет сравнить каждый столбец между двумя запросами на совпадение, так как все столбцы должны совпадать, чтобы он был «пересекающейся» строкой.
Возможны некоторые проблемы с синтаксисом, но, надеюсь, это поможет вам начать работу.
SELECT r.col1
, t.col1
/* list all other columns here */
FROM results r
, types t
WHERE r.a = t.b
AND EXISTS (
SELECT *
FROM results r2
, types t2
WHERE r2.c = t2.b
AND NZ(r.col1,0) = NZ(r2.col1,0)
AND NZ(t.col1,0) = NZ(t2.col1,0)
/* list other columns here, they all need to match so intersection will work */
)