【发布时间】:2011-03-12 01:40:10
【问题描述】:
我有一个用户表 (User) 和 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
【问题讨论】: