Добрый вечер! Есть запрос, который перебирает подходящие объекту заявки по нескольким параметрам: Код (Text): SELECT t1.Id AS BidId FROM unsatisfied_bids AS t1 LEFT JOIN unsatisfied_bids_flats AS t2 ON t1.Id=t2.BidId WHERE t1.Id NOT IN (SELECT t2.BidId FROM unsatisfied_bids_collation AS t2 WHERE ObjectId=71) AND t1.CategoryId=1 AND t1.Status<>3 AND IF(t1.PriceFrom,t1.PriceFrom>[цена объекта],1=1) AND t1.CityId=1 AND [ид района объекта] IN t1.DistrictIds По нему имеются сразу два вопроса: 1. Вот эта строка AND IF(t1.PriceFrom,t1.PriceFrom>0,1=1) — должна проверять указана ли «Цена От» в записи целевой таблицы, и если да, сравнивать со значением цены объекта, если нет просто пропускать это условие-фильтр. 2. В целевой таблице есть поле DistrictIds, в котором хранятся через запятую допустимые ид-шники районов (например: 1,3,4,7). Я же, другими словами, пытаюсь сделать такое условие: 1 IN (1,3,4,7). Однако оно синтаксически неверно. Можно ли его как-то переписать, не создавая доп. связующей таблицы?
1. Решилось переписью выражения: Код (Text): AND ((t1.PriceFrom>0 AND t1.PriceFrom<=[цена]) OR t1.PriceFrom=0) 2. Решилось переписью выражения (однако, не лучший вариант по производительности): Код (Text): AND (t1.DistrictIds LIKE "%,[ид района],%" OR t1.DistrictIds LIKE "[ид района],%" OR t1.DistrictIds LIKE "%,[ид района]" OR t1.DistrictIds="")