PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
masterlelik
Отправлено: 06 Февраля, 2017 - 15:53:37
Post Id


Новичок


Покинул форум
Сообщений всего: 51
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Есть две таблицы
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 и более, потому что в примере выбирается хотя бы одно значение каждого из двух фильтров
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB