@ak_wi

MySQL: Как получить сущности у которых только 1 запись связана many to many?

SELECT p0_.id                AS id
FROM product p0_
         LEFT JOIN product_color_group p7_ ON p0_.id = p7_.product_id
         LEFT JOIN color_group c3_ ON c3_.id = p7_.color_group_id
WHERE c3_.id IN (17, 15)
GROUP BY p0_.id
HAVING COUNT(DISTINCT c3_.id) = 1
ORDER BY p0_.id ASC
LIMIT 18;


В таблице product_color_group только product_id и color_group_id
Нужно показывать товары у которых есть только один из выбранных цветов (или 17 или 15). А запрос возвращает и товары, у которых есть например цвета 17 и 3
В чем проблема?
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@aru001
Проблема в том, что сначала будет наложено условие "c3_.id IN (17, 15)", а уже затем на результат "COUNT(DISTINCT c3_.id) = 1". К этому времени в таблице для каждого id будет определенный цвет 15 или 17.
Можно во временной таблице заранее получить продукты, у которых только один цвет, и работать с ними.
Ответ написан
Ваш ответ на вопрос

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

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