Akuma
@Akuma
Веб-программист

Как исправить этот MySQL запрос?

Привет,

есть запрос, который в MySQL 5.5 отрабатывает верно, но на 5.1 версии начинает работать криво.

SELECT m0_.id AS id1,
       m0_.title AS title2,
       COUNT(m0_.chain_id) AS chain_cnt,
       IFNULL(m0_.chain_id, UUID()) AS sclr41
FROM mall__store m0_
LEFT JOIN mall__store_highlighted_category_relation m3_ ON m0_.id = m3_.store_id
LEFT JOIN mall__store_category m1_ ON m1_.id = m3_.category_id
LEFT JOIN mall__store_priority_category_relation m4_ ON m0_.id = m4_.store_id
LEFT JOIN mall__store_category m2_ ON m2_.id = m4_.category_id
WHERE m0_.active = 1
  AND m0_.rel_city_id = 2
  AND m0_.parent_id IN (4)
  AND m0_.id IN (185, 32, 156)
GROUP BY id1, title2
ORDER BY m0_.antiVip ASC


На самом деле там еще больше условий (для JOINов как раз), но все остальное не влияет на результаты.

На 5.5 выдает следующее (все как задумано):
5de670ba220858998d4eac8cf5f1187b.png

А на 5.1 показывает так:
78d7f01e88adddc0a69cb16bedc2d7b4.png

Как видите, поле chain_cnt увеличивается. Остальные поля разные из-за немного разных баз, там все нормально.
Все дело в джоинах, если их убрать все работает как надо, но убирать их не вариант.

Может кто-то подскажет как это можно победить?
Обновлять MySQL тоже не вариант, еще больше проблем может случиться.
  • Вопрос задан
  • 2262 просмотра
Решения вопроса 1
@AlexeyVD
Не очень понятно, что вы подразумеваете под "работает криво". Если проблема в том, что в поле chain_cnt выводятся не единицы, а другие значения, то очевидно, что причина в данных. В ,fpt 5.5 у вас до группировки для id = 185 только одна строка, а в 5.1 - 3 строки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы