У меня есть пользовательская таблица (Пользователь) и 3 таблицы учебников (текст, видео и прочее).Как сгруппировать суммы столбцов из разных таблиц?
Каждый учебник имеет столбцы rating_positive
и rating_negative
и связан с пользователем (id).
Я хочу выбрать 10 пользователей с большинством учебников и суммой положительных/отрицательных отзывов о своих учебниках.
Я пробовал следующий запрос, но он не работает. Он возвращает слишком много результатов для tutorials_count/pos/neg. Как я могу сделать это правильно?
SELECT
u.id AS user_id,
(COUNT(t.id) + COUNT(v.id) + COUNT(o.id)) AS tutorials_count,
(SUM(t.rating_positive) + SUM(v.rating_positive) + SUM(o.rating_positive)) AS pos,
(SUM(t.rating_negative) + SUM(v.rating_negative) + SUM(o.rating_negative)) AS neg
FROM
user u LEFT JOIN trick t ON u.id = t.submitter_id
LEFT JOIN video v ON u.id = v.submitter_id
LEFT JOIN other o ON u.id = o.submitter_id
GROUP BY u.id
ORDER BY tutorials_count DESC
LIMIT 10
это работает. :-) Есть ли даже лучший запрос с более высокой производительностью? – Smock