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

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

Есть таблица 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 просмотров
Пригласить эксперта
Ответы на вопрос 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 попадутся две самые распростанённые характеристики (зависит от объёма данных)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
30 апр. 2024, в 23:39
3000 руб./за проект
30 апр. 2024, в 23:32
1500 руб./за проект
30 апр. 2024, в 22:44
500 руб./в час