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

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

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

Есть таблица 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'


Так не работает, люди помогите я в тупике.
Может архитектура не правильная ?
  • Вопрос задан
  • 2498 просмотров
Подписаться 2 Оценить 4 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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 попадутся две самые распростанённые характеристики (зависит от объёма данных)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽