select  a.id,sum(d.score+d.cn*6)+20*a.login_count+a.view_count as score
from
users a left join 
(
select b.author_id,sum((c.score+b.oscore)/(c.cn+b.oscore_count)) as score,sum(c.cn) as cn
from articles b left join 
(
select reply_to, sum(score) as score,count(*) as cn from articles where reply_to is not null group by reply_to
) as c
on b.author_id=c.reply_to and b.reply_to is null
) as d

解决方案 »

  1.   

    select  a.id,sum(d.score+d.cn*6)+20*a.login_count+a.view_count as score
    from
    users a left join 
    (
    select b.author_id,sum((c.score+b.oscore)/(c.cn+b.oscore_count)) as score,sum(c.cn) as cn
    from articles b left join 
    (
    select reply_to, sum(score) as score,count(*) as cn from articles where reply_to is not null group by reply_to
    ) as c
    on b.author_id=c.reply_to and b.reply_to is null
    group by b.author_id
    ) as d
    group by a.id