Есть две таблицы 1) Таблица хранит programm_id программы и filter_value значение фильтра programm_id | filter_value 1 | 8 1 | 9 1 | 11 2 | 9 2 | 11 2 | 12 2) Таблица хранит фильтры filter_id и их значения filter_value filter_id | filter_value filter_id=1 - пол filter_id=2 - возраст filter_value=8 - мальчик filter_value=9 - девочка filter_value=11 - 5-10 лет filter_value=12 - 11-15 лет 1 | 8 1 | 9 2 | 11 2 | 12 Как выбрать все программы, если на сайте выбраны фильтры со значениями filter_value 8, 9, 11, 12 должно выбрать обе программы 1 и 2 или 8, 11, 12 должно выбрать программы 1 Т.е. суть такая, что есть родительский filter_id и если выбрано хотя бы одно его значение, то это 1 Я пробовал так, но лли COUNT не по тому полю, или группировать по другому полю SELECT `t1`.`programm_id`, count(`t2`.`filter_id`) AS cnt FROM `t_programm_filter` `t1`, `t_filters` `t2` WHERE `t1`.`filter_value`=`t2`.`filter_value` AND t1.filter_value IN (8,9,11,12) GROUP BY `t2`.`filter_id` HAVING cnt>=2 P.S. cnt тут 2 и более, потому что в примере выбирается хотя бы одно значение каждого из двух фильтров
@masterlelik ну сразу идёт запрос в первую таблицу и полученные результаты формируют строку второго запроса
@masterlelik не мне лень.... но делаем запрос к первой таблице типа селект * где столбец=11 далее средствами пыха (или вложенный запрос?) преобразовываем результат в вид $res='value1 or value2 or ...' и делаем запрос вида select * from table where filtervalue=$res
Если следовать строго рамкам задачи: Код (Text): SELECT * FROM table1 WHERE filter_value IN( SELECT filter_value FROM table2 WHERE filter_id IN (1) AND filter_value IN (8, 9, 11, 12) ) , где условие filter_id IN (1) нужно для определения группы "важных" полей.