У меня есть две таблицы: P
и PC
(мастер/подробно присоединился колонке Id)SQL подзапросов альтернатива пересекаться
Table P:
Id integer
Name varchar(12)
Table PC:
Id integer
Code varchar(12)
Val number
Я хочу, чтобы получить все имена из P, которые удовлетворяют следующим одновременные условиям:
есть компьютер с
PC.Code='A'
иVal>100
есть другой компьютер с
PC.Code='B'
иVal>80
В целом, я заинтересован только в тех P.Name где детали соответствуют обоим условиям. Есть ли способ выбрать, не прибегая к INTERSECT?
Запрос ПЕРЕСЕЧЕНИЕ является:
Select P.Name
from P, PC
where P.Id=PC.Id
and PC.Code='A' and Val>100
INTERSECT
Select P.Name
from P, PC
where P.Id=PC.Id
and PC.Code='B' and Val>80
(Интерес для проверки производительности, а также, чтобы запрос будет работать в Access)
[Статья] (http://stackoverflow.com/questions/2302873/sql-syntax-error-with-intersect) показывает вам, как в общем случае переписывать запросы INTERSECT с помощью JOIN. В частности, см. Решение Винко Врсаловича. – mwigdahl