ユーザー、質問、無制限のレベルのカテゴリがあります。ユーザーは質問からいくつかのポイントを得ることができます。質問には複数のカテゴリを含めることができます。
私がやりたいのは、カテゴリごとのトップ ユーザーを計算することです。これは、そのカテゴリの下の質問から得られた合計ポイントと、サブカテゴリでもあります。
だから、私はこれらのテーブルを持っています:
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