Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询-获取每个用户和类别的最新分数_Php_Mysql_Sql - Fatal编程技术网

Php MySQL查询-获取每个用户和类别的最新分数

Php MySQL查询-获取每个用户和类别的最新分数,php,mysql,sql,Php,Mysql,Sql,这是我的数据库结构的图像: 基本上,它是一个测验应用程序,每个问题和测验都有一个类别,因为测验类别也是混合的,其中包括来自几个类别的问题。每次用户进行新的测验时,测验表中都会有一个新条目——记录用户、类别、分数以及测验的开始和结束时间 我需要一个查询,其中显示每个用户和类别的最新分数。 很好:还有每个用户和类别的平均分数 最终看起来应该是这样的。很明显,我已经有了一个查询,但它并没有很好地工作,因为Max Mustermann只显示了一个结果,但实际上有4个类别的结果。我真的不知道为什么所有其

这是我的数据库结构的图像:

基本上,它是一个测验应用程序,每个问题和测验都有一个类别,因为测验类别也是混合的,其中包括来自几个类别的问题。每次用户进行新的测验时,测验表中都会有一个新条目——记录用户、类别、分数以及测验的开始和结束时间

我需要一个查询,其中显示每个用户和类别的最新分数。 很好:还有每个用户和类别的平均分数

最终看起来应该是这样的。很明显,我已经有了一个查询,但它并没有很好地工作,因为Max Mustermann只显示了一个结果,但实际上有4个类别的结果。我真的不知道为什么所有其他用户都会显示他们玩过的结果,可能是因为他们每个类别只玩过一次测验。但是马克斯·穆斯特曼只玩了一次混合类游戏,没有显示出来

这是我目前使用的代码:

$query_scores_per_cat_per_user = "
        SELECT category, t1.scores AS scores
        FROM categories 
        left JOIN quizzes as t1 ON categories.id=t1.FK_categories
        left JOIN quizzes AS t2
          ON t1.FK_users = t2.FK_users 
                AND t1.end_timestamp < t2.end_timestamp
        WHERE t2.FK_users IS NULL 
        and t1.fk_categories = ".$category_id." and t1.FK_users=".$all_users_id."
        order by category ASC"
你能帮我找出错误吗?我在这里真的迷路了。 谢谢大家!

SELECT t2.UserName, category, Sum(t1.scores) AS scores, AVG(t1.scores)
        FROM categories 
        left JOIN quizzes as t1 ON categories.id=t1.FK_categories
        left JOIN quizzes AS t2
          ON t1.FK_users = t2.FK_users 
                AND t1.end_timestamp < t2.end_timestamp
        WHERE t2.FK_users IS NULL 
        and t1.fk_categories = ".$category_id." and t1.FK_users=".$all_users_id."
Group by t2.UserName, Category,
        order by t1.Scores desc, category

我没有尝试..

您需要在第二次加入中包含该类别


请看,您是否知道是否也可以显示每个用户和类别的测验次数、平均分数以及最高分数?-我有一个查询,但它显示了奇怪的结果。您需要加入使用GROUP BY的子查询来获得这些结果。
$query_scores_per_cat_per_user = "
    SELECT category, t1.scores AS scores
    FROM categories 
    left JOIN quizzes as t1 ON categories.id=t1.FK_categories
    left JOIN quizzes AS t2
      ON t1.FK_users = t2.FK_users 
        AND t1.FK_categories = t2.FK_categories
        AND t1.end_timestamp < t2.end_timestamp
    WHERE t2.FK_users IS NULL 
    and t1.fk_categories = ".$category_id." and t1.FK_users=".$all_users_id."
    order by category ASC"