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