我们有用户、问题和无限级别的类别。用户可以从问题中获得一些分数。问题可以有多个类别。
我想做的是计算每个类别的顶级用户:它只是从该类别下的问题中获取的总分,它也是子类别。
所以,我有这些表:
questions
--------------
id
title
question
categories
--------------
id
parent_id
category
lft
rgt
question_categories
--------------
question_id
category_id
users
--------------
id
username
user_points
--------------
id
user_id
question_id
point_type
points
user_category
--------------
user_id
category_id
points
我想做的是计算 user_category.points 值。总结每个类别的分数很容易,但包括子类别变得越来越复杂。
最好的方法是什么?
示例计算:
假设类别是:
Programming
PHP
Zend Framework
Symfony
Java
Ruby on Rails
假设用户从 Zend Framework获得3 分,从 PHP获得2 分,从 java获得5 分,从 Rails获得1 分。该用户每个类别的积分将是:
Programming 11 (5+5+1)
PHP 5 (2+3)
Zend Framework 3
Symfony
Java 5
Ruby on Rails 1