У меня есть 2 таблицы: rules
и measure_units
.Правило имеет много измерений measure_units и measure_unit has_many.Итак, у нас есть таблица соединения с rule_id
и measure_unit_id
.
Теперь, учитывая правило, я хочу выбрать все правила с точно одинаковыми единицами измерения.
rule1 => grams
rule2 => grams,meters
rule3 => grams,meters,litre
rule4 => meters
rule5 => grams,meters
rule6 => litre,grams
Учитывая правило 2 (с граммами и метрами), мне нужно выбрать правила 2 и 5.
Моя попытка была:
SELECT `rules`.* FROM `rules`
LEFT JOIN `measurables` ON `measurables`.`rule_id` = `rules`.`id`
LEFT JOIN `measure_units` ON `measure_units`.`id` = `measurables`.`measure_unit_id`
WHERE `measure_units`.`id` IN (1,2)
GROUP BY `measurables`.`rule_id`
HAVING (count(*) = 2)
Но этот запрос не работает, потому чтовыберите все правила, которые имеют как минимум единицы измерения с идентификаторами 1 и 2. Так же и правило 3.
Возможен запрос, совместимый с MySQL.
Здесь дБ-fiddle: https://www.db -fiddle.com / f / vxg6vYjpSYJqN7sn83JLei / 1 , где попробовать запрос.