Есть таблица такой структуры object properti val 1 1 1 2 1 2 3 2 1 4 3 2 1 4 1 7 2 1 нужно выбрать object для которых есть (properti=1 and val=1) and (properti=4 and val=1) одним запросом
[sql]select MARKET_RELATIONS.object from MARKET_RELATIONS where MARKET_RELATIONS.object in (select MARKET_RELATIONS.object from MARKET_RELATIONS where MARKET_RELATIONS.properti=1 and MARKET_RELATIONS.val=8) and MARKET_RELATIONS.object in (select MARKET_RELATIONS.object from MARKET_RELATIONS where MARKET_RELATIONS.properti=3 and MARKET_RELATIONS.val=391 ) group by MARKET_RELATIONS.object having count(MARKET_RELATIONS.object)>=2[/sql] вот такой вариант может как-то проще можно?
Жуть... А чем Вас простой запрос не устраивает? select * from table where (properti=1 and val=1) and (properti=4 and val=1) group by object
Chushkin А такое вообще работает??? inline [sql]select object from table where (properti=1 and val=1) and object in (select object from table where (properti=4 and val=1))[/sql] [sql]select object from table join (select object from table where (properti=4 and val=1)) as t on t.object=table.object where (properti=1 and val=1) [/sql]
Volt(220) А, дошло, чего автор хочет, - мой вопрос/вариант в корзину. А Ваш второй вариант (с join) может лучше без подзапроса? [sql]select table.object from table inner join object as t on t.properti=4 and t.val=1 and t.object=table.object where table.properti=1 and table.val=1 group by table.object [/sql]п.с. Я предпочитаю использовать подзапросы только тогда, когда действительно необходимо.