Php MySQL获取每个类别中每个用户的分数

Php MySQL获取每个类别中每个用户的分数,php,mysql,Php,Mysql,基本上,我有以下表格: users (id) question_categories(id) questions(id, category) answers(id, user, question, score) 我的问题是获得每个类别中每个用户的总分,以便根据每个类别中的分数对其进行筛选 我希望得到一个类似(user、score\u cat\u 1、score\u cat\u 2,…)的结果表。通过从PHP构建表来添加每个类别分数列,我尝试了这个选项,但是我必须在我想要添加的每个类别列上

基本上,我有以下表格:

users (id)

question_categories(id)

questions(id, category)

answers(id, user, question, score)
我的问题是获得每个类别中每个用户的总分,以便根据每个类别中的分数对其进行筛选

我希望得到一个类似(user、score\u cat\u 1、score\u cat\u 2,…)的结果表。通过从PHP构建表来添加每个类别分数列,我尝试了这个选项,但是我必须在我想要添加的每个类别列上运行一个联接子查询。差不多

SELECT u.id, SUM(cat1.score) AS score_cat_1, ...
FROM users u
LEFT JOIN (
     SELECT score, category, user
     FROM answers a
     JOIN questions q ON a.question=q.id AND q.category=1
) AS cat1 ON u.id=cat1.user
...
因此,我担心该表的大小和类别的数量会带来性能问题。有更好的方法吗


谢谢你试过这个吗@是的,这是我读了一些书后得出的结论。我计划使用mysql的prepare语句,在mysql中动态构建查询。我会试试。@GáborBakos不,绝对不会。这与代码审查材料相差甚远。请查收