gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Привязана ли команда SUM (mysql) к оператору SELECT FROM?

Столкнулся с проблемой, что записей в базе очень много, и выводить сначала товары, а потом их фильтровать по моделям, затем по брендам, затем по группам очень длительное время занимает.

Пошел обратным путем - выбрал сначала группы FROM product_group, сделал LEFT JOIN к брендам, потом к моделям и в конце к продуктам, но в SELECT использовал команду SUM(amount_products).

У всех категорий выводит одинаковое значение, которое зависит от GROUP BY. То есть пишу GROUP BY brand_id, во всех брендах одинаковое число.

Значит ли это, что оператор SUM полностью связан с FROM product_group, и поэтому попросту берет значение первой строки для каждого из брендов?

Как в этом случае сделать выборку "всех брендов в которых нет товаров"?
  • Вопрос задан
  • 121 просмотр
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
Хорошо, что проблема разрешилась, но - просто для ясности... Оператор, точнее, аггрегирующая функция SUM() связанa с указанным полем того множества, из которого производится SELECT, и суммирует значения этого поля для записей, прошедших все фильтры (WHERE и HAVING). В простейшем случае это одна таблица (тогда подразумевается GROUP BY по первичному ключу, т.е., эффективно, вообще никакого), но может быть и JOIN, и подзапрос и.д. и тогда уже, конечно, нужно явно указывать GROUP BY, который будет относиться к одному или нескольким полям ЭТОГО ЖЕ множества. Проще говоря, аггрегирующие функции относятся к множеству, полученному в результате группировки и применяются к тем записям, которые были "свернуты" этой группировкой.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gzhegow
@gzhegow Автор вопроса
aka "ОбнимиБизнесмена"
Опс, я олень, забыл проставить связь, и он всегда подключался к моделям без учета бренда, вот одинаковое число и получается :( извините за беспокойство
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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