Sql 连接和查询的问题
编辑:删除了我的旧邮件,因为它令人困惑。我现在还不能回答我自己的问题 发现,问题来自分组 经过一些研究,我发现我们不能将GROUPBY用于分组行中的列 因此,这项工作正如预期的那样:Sql 连接和查询的问题,sql,Sql,编辑:删除了我的旧邮件,因为它令人困惑。我现在还不能回答我自己的问题 发现,问题来自分组 经过一些研究,我发现我们不能将GROUPBY用于分组行中的列 因此,这项工作正如预期的那样: SELECT candidats.* , AVG(test_results.rate_good_answer) AS toto FROM "candidats" LEFT JOIN "sessiontests" ON "sessiontests"."candidat_id" = "candid
SELECT candidats.*
, AVG(test_results.rate_good_answer) AS toto
FROM "candidats"
LEFT JOIN "sessiontests"
ON "sessiontests"."candidat_id" = "candidats"."id"
LEFT JOIN "test_results"
ON "test_results"."sessiontest_id" = "sessiontests"."id"
LEFT JOIN "questionnaires"
ON "questionnaires"."id" = "test_results"."questionnaire_id"
WHERE (sessiontests.terminate = 't' )
AND ("questionnaires"."category" LIKE '%java%' )
GROUP BY candidats.id
ORDER BY toto
但这将仅对测试结果中的我的列进行分组:
SELECT candidats.*,
FROM "candidats"
LEFT JOIN "sessiontests"
ON "sessiontests"."candidat_id" = "candidats"."id"
LEFT JOIN "test_results"
ON "test_results"."sessiontest_id" = "sessiontests"."id"
LEFT JOIN "questionnaires"
ON "questionnaires"."id" = "test_results"."questionnaire_id"
WHERE (sessiontests.terminate = 't' )
AND ("questionnaires"."category" LIKE '%java%' )
GROUP BY candidats.id, test_results.rate_good_answer
ORDER BY AVG(test_results.rate_good_answer)
编辑3:
我的问题是,第二个查询为我的候选对象返回每个不同的test_results行,而我希望它为每个候选对象返回一行
第一个查询是答案,效果很好。选择候选人*
,平均测试结果。将良好答案评定为toto
来自候选人
左连接会话测试
在sessiontests.candidate_id=candidates.id上
左连接测试结果
在测试时,sessiontest\u id=sessiontests.id
左键联接问卷
关于问卷调查。id=测试结果。问卷调查
其中sessiontests.terminate='t'
以及类似“%java%”的.category
按候选人分组
按toto排序您是否尝试过按candidates.id进行分组?您能否澄清您希望如何对结果进行排序,可能包括示例?通过平均值或任何其他聚合函数进行排序时,结果在其组内始终未排序,因为聚合函数在组内始终具有相同的值。还有,你在使用MySQL吗?刚刚试过,它使我的sqlite:p崩溃了。但我已经知道,这是行不通的。因为,如果要在ORDER BY中使用聚合函数,必须按此列分组@马克,现在我的问题解决了。我的问题真的让人困惑,所以我只添加了答案。我的第一个查询按预期工作。