@GeKskill

Выбрать строку из БД по значениям связанной таблицы?

Привет. Пробовал искать, но с запросом не складывается.

Есть таблица с общим правилом:
Таблица rule
id, path, content, cat_id 
1 | /category/new-category | Some Content | 325


И есть другая таблица со значениями к этому правилу:
Таблица rule_options
id, rule_id, option 
1 | 1 | 4670
2 | 1 | 5492


Как выбрать строку в таблице rule, где option=4670 AND option=5492 ?
Был вариант записывать эти опции в основной таблице типа: "4670 | 5492" и потом искать с помощью LIKE %% но это ведь плохое решение?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
SELECT rule.id, rule.path, rule.content, rule.cat_id 
FROM rule
JOIN rule_options ON rule.id = rule_options.rule_id
WHERE rule_options.option IN (4670, 5492)
GROUP BY 1,2,3,4
HAVING COUNT(DISTINCT rule_options.option) = 2;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@balamyt92
; select * from users; --
Кажется что вам стоит это сделать с помощью SET, но придется изменить способ хранения https://dev.mysql.com/doc/refman/8.0/en/set.html

так же можно попробовать конечно через GROUP_CONCAT и HAVING собрать запрос, но не уверен в оптимальности такого подхода на ваших данных
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы