Добрый день.
Помогите, пожалуйста, составить sql запрос, с выборкой товаров где в таблице table есть и фильтр1 и фильтр2 и фльтр3....
table
id(AI) resource_id(int) filter_id(int)
1 54 1
2 54 2
3 54 3
4 55 1
5 55 112
6 55 113
Пытался всяко разно:
$filters = ['1', '2', '3']; // допустим выбранные пользователем фильтры приходят такие
$count = count($filters); // 3
1)
$sql = "SELECT DISTINCT m.id, m.pagetitle FROM `table1` m
INNER JOIN `filters` f
ON m.id = f.resource_id WHERE
f.filter_id IN(".$filters.")
AND m.template='$template' AND m.published='1' AND m.deleted='0' AND m.isfolder='0'";
так выбирает и 54, и 55 ресурс, так как у них обоих есть
filter_id равный 1, то есть логика ИЛИ/ИЛИ, а должен выбрать только тот ресурс, где есть filter_id=1 и filter_id =2 и filter_id=3, то есть 54 ресурс только
Еще пробовал так, но выбирает непонятно что
2)
$sql = "SELECT DISTINCT m.id, m.pagetitle FROM `table1` m
INNER JOIN
(SELECT DISTINCT `resource_id` FROM `filters` WHERE `filter_id` IN(".$filters.")
GROUP BY `resource_id` HAVING COUNT(`filter_id`) >= $count) f
ON m.id = f.resource_id WHERE
m.template='$template' AND m.published='1' AND m.deleted='0' AND m.isfolder='0'";