Mysql 分级分配[Zaption]数据库

Mysql 分级分配[Zaption]数据库,mysql,database,relationship,querying,libreoffice-base,Mysql,Database,Relationship,Querying,Libreoffice Base,最具体地说,我很难从LibreOffice Base[HSQLdb]返回一份按(1)班级,(2)作业,(3)学生姓氏组织的成绩列表 我需要这个输出,这样我就可以运行一个脚本将成绩从数据库复制到一个在线成绩册(它没有API[sadface]) 我怀疑造成此问题的几个可能原因: 可能需要调整 我需要在Zaption上实现一个“学生ID”。在Zaption上,学生们用他们选择使用的任何“ZaptionName”进行提交。然后,我在第二个表中手动将ZaptionName与RosterFullName匹配

最具体地说,我很难从LibreOffice Base[HSQLdb]返回一份按(1)班级,(2)作业,(3)学生姓氏组织的成绩列表

我需要这个输出,这样我就可以运行一个脚本将成绩从数据库复制到一个在线成绩册(它没有API[sadface])

我怀疑造成此问题的几个可能原因:

  • 可能需要调整

  • 我需要在Zaption上实现一个“学生ID”。在Zaption上,学生们用他们选择使用的任何“ZaptionName”进行提交。然后,我在第二个表中手动将ZaptionName与RosterFullName匹配

  • Zaption允许同一“学生”为同一作业多次提交。由于允许多次提交,我运行FilterLowMultiples查询为该学生的作业选择最高分数

  • 过滤器低倍数:

    SELECT MAX( "Grade" ) "Grade", "RosterFullName",
    "Assignment", MAX( "ZaptionName" ) "ZapName"
    FROM "SelectAssignment"
    GROUP BY "RosterFullName", "Assignment"
    
    选择下面的分配以供参考:

    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时使用
    左连接
    ,这样就不会丢弃没有完成特定作业的学生。或者,您可以在“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')
    

    您能否提供一个最小但全面的所需输出示例(特别是包括排序和角落案例,如缺少分配等级)?如果输出示例本身没有回答为什么学生“倒下”对你的转移脚本不好,那么知道这个逻辑也是很好的。绝对正确!对于单个赋值查询,这里是my,复制并粘贴到Calc中,这里是my。这已经足够好了。当我有2个或更多作业查询时,问题就出现了,或者我不能仅仅用脚本将输出复制到web成绩册,或者当非提交者“倒下”时,这也会干扰脚本复制,因为web成绩册行是按字母顺序排列的。对于多作业查询,是链接的。上面的“2个或多个分配查询”应该是“2个或多个分配查询”。这肯定是答案,这是我忽略的一点,现在我只需要找出如何实现它。