Расчет баллов для категории и подгруппы -Комбинированная категория

В настоящее время я использую систему баллов, которая использует приведенный ниже запрос, чтобы перечислить, кто имеет наибольшее количество баллов в категории или любой категории непосредственно под ней (, используя «ссылки _на» и «ссылки _из» в 'категория _таблица отношений' ).

SELECT  u.name, 
        pa.user_id, 
        SUM(IF(pa.plus = '1', pa.points_amount, 0)) - 
        SUM(IF(pa.plus = '0', pa.points_amount, 0)) AS points
FROM    points_awarded pa, Users u
WHERE   u.user_id = pa.user_id AND 
        (
           category_id = '". $category_id. "' OR 
           category_id IN
               (
                   SELECT links_to
                   FROM category_relations
                   WHERE links_from = '". $category. "'
               )
        ) 
GROUP BY user_id 
ORDER BY points DESC 
LIMIT 50

Что я сейчас хочу сделать, так это переключить этот запрос на поиск всех категорий для определенного пользователя, а не искать всех пользователей для определенной категории. Ниже приведен запрос, который я пытался использовать, но он включает только баллы для категории, а не для подкатегорий непосредственно ниже.

SELECT   u.name, 
         pa.user_id, 
         pa.category_id,
         SUM(IF(pa.plus = '1', pa.points_amount, 0)) - 
         SUM(IF(pa.plus = '0',pa.points_amount, 0)) AS points
FROM     points_awarded pa, Users u
WHERE    u.user_id = pa.user_id AND 
         u.user_id = '". $user_id. "'
GROUP BY pa.category_id 
ORDER BY points DESC 
LIMIT 50
6
задан John Woo 1 August 2012 в 12:04
поделиться