最具体地说,我无法从 LibreOffice Base [HSQLdb] 返回按 (1) 类(class)、(2) 作业、(3) 学生姓氏组织的成绩列表。
我想要这个输出,这样我就可以运行脚本将成绩从数据库复制到在线成绩簿(没有 API [sadface])
我怀疑这个问题有几个可能的原因:
My relational structure可能需要调整。
我需要以某种方式实现“学生 ID”。在 Zaption 上,学生在他们选择使用的任何“ZaptionName”下进行提交。然后,我手动将 ZaptionName 与显示的第二个表中的 RosterFullName 匹配。
Zaption 允许同一“学生”针对同一作业多次提交。由于允许多次提交,我运行 FilterLowMultiples 查询来为该学生选择该作业的最高成绩。
FilterLowMultiples:
SELECT MAX( "Grade" ) "Grade", "RosterFullName",
"Assignment", MAX( "ZaptionName" ) "ZapName"
FROM "SelectAssignment"
GROUP BY "RosterFullName", "Assignment"
SelectAssignment 如下供引用:
SELECT "GradedAssignments"."Assignment", "Roster"."RosterFullName",
"GradedAssignments"."Grade", "ZaptionNames"."ZaptionName"
FROM "Roster", "ClassIndex", "GradedAssignments", "ZaptionNames"
WHERE "Roster"."Class" = "ClassIndex"."Class"
AND "GradedAssignments"."ZaptionName" = "ZaptionNames"."ZaptionName"
AND "ZaptionNames"."RosterFullName" = "Roster"."RosterFullName"
AND ( "GradedAssignments"."Assignment" = 'YouKnowWhatever')
我对 PullAssignmentGrades 的查询如下,但是按作业排序失败,因为默认情况下没有作业,除非那个学生提交了作业,所以该行是空白的,那个学生排在最后,这对我运行的转移到在线脚本。
SELECT "Roster"."RosterFirstName", "ClassIndex"."Class",
"Roster"."RosterFullName", "ClassIndex"."ClassLevel",
"FilterLowMultiples"."Grade", "FilterLowMultiples"."ZapName",
"FilterLowMultiples"."Assignment", "FilterLowMultiples"."Grade",
"FilterLowMultiples"."Assignment", "ClassIndex"."ClassDisplayOrder",
"Roster"."RosterLastName"
FROM "ClassIndex", "FilterLowMultiples", "Roster"
ORDER BY "Roster"."RosterFirstName" ASC,
"FilterLowMultiples"."Grade" DESC,
"FilterLowMultiples"."Assignment" ASC,
"ClassIndex"."ClassDisplayOrder" ASC,
"Roster"."RosterLastName" ASC
最佳答案
在您的 SelectAssignment 查询中使用 LEFT JOIN
,这样您就不会放弃没有完成特定作业的学生。您可以选择对“GradedAssignments”表中的潜在 NULL
值使用 COALESCE
来分配 0 或 I 的成绩。像这样:
SELECT 'YouKnowWhatever' AS "Assignment", "Roster"."RosterFullName",
COALESCE("GradedAssignments"."Grade",0), "ZaptionNames"."ZaptionName"
FROM "Roster"
INNER JOIN "ClassIndex" ON "Roster"."Class" = "ClassIndex"."Class"
INNER JOIN "ZaptionNames" ON "ZaptionNames"."RosterFullName" = "Roster"."RosterFullName"
LEFT JOIN "GradedAssignments" ON ("GradedAssignments"."ZaptionName" = "ZaptionNames"."ZaptionName"
AND "GradedAssignments"."Assignment" = 'YouKnowWhatever')
关于mysql - 评分作业 [Zaption] 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638017/