Задать вопрос

Архитектура для характеристик заведении

Всем Привет)! Делаю фильтр по характеристикам заведении

Есть таблица places это сами заведения, поля id и т.д
таблица filtersтам лежат сами характеристики, поля id, type, value
и есть таблица соединительная places_filters
там поля place_id, filter_id

Вот теперь как сделать запрос на выборку, когда надо вытащить все заведения по нескольким характеристиками ?

SELECT DISTINCT `place`.* FROM `places` AS `place` 
INNER JOIN `place_filters` 
ON (`place_filters`.`place_id` = `place`.`id`) 
WHERE 
`place_filters`.`filter_id` = '4' 
AND 
`place_filters`.`filter_id` = '1'


Так не работает, люди помогите я в тупике.
Может архитектура не правильная ?
  • Вопрос задан
  • 2496 просмотров
Подписаться 2 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 1
@niko83
в mysql не дебажил но типа такого должно сработать
select place_id, count(*) from places_filter where filter_id IN ( 1, 100, 15 ,22) group by place_id HAVING count(*) = 4

( 4 - кол-во всех характеристик перечисленных в IN )
Если сработает, то повставляйте данных побольше и посомтрите на EXPLAIN и проверьте производительность. Проблема скорее всего будет если в filter_id IN попадутся две самые распростанённые характеристики (зависит от объёма данных)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы