mariadb 如何对查询中的条目进行分类?

cwdobuhd  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(107)

我有三张表:student、assignment和subject。它们具有以下值:

学生

| 学生标识|学生姓名|主题标识|
| - -|- -|- -|
| 二OO一年|约翰·麦肯罗|十一|
| 二OO二年|梅·罗克韦尔|十三个|
| 二〇 〇五年|詹姆斯·克朗韦尔|十三个|
| 二〇一二年|简·克里克特|十四|

主题

| 主题标识|主题名称|
| - -|- -|
| 十一|数学|
| 十三个|历史记录|
| 十四|生物学|

工作分派

| 学生标识|主题标识|说明书|刻痕|提交日期|
| - -|- -|- -|- -|- -|
| 二OO一年|十一|作业1| 8.0版本|2021年5月13日20时15分20秒|
| 二OO一年|十一|作业2| 8.0版本|2021年6月15日21时35分40秒|
| 二〇 〇五年|十三个|作业1| 4.0版|2021年5月13日19时05分30秒|
我希望创建一个查询,该查询将返回所有学生和相关科目的列表,其中每个科目的状态遵循以下规则,并且还将返回上次作业评估的日期。

  • 如果没有得分=待定
  • 如果评分〉= 5 =通过
  • 如果分数〈5 =考试
    预期输出:

| 学生姓名|主题名称|说明书|状态|提交日期|
| - -|- -|- -|- -|- -|
| 约翰·麦肯罗|数学|作业1|已通过|2021年5月13日20时15分20秒|
| 约翰·麦肯罗|数学|作业2|已通过|2021年6月15日21时35分40秒|
| 詹姆斯·克朗韦尔|历史记录|作业1|考试|2021年5月13日19时05分30秒|
| 梅·罗克韦尔|历史记录||搁置中||
| 简·克里克特|生物学||搁置中||
我试着使用下面的代码,但没有用。我被卡住了。我需要任何帮助。

SELECT 
 student_name
,subject_name
,submission_date
 from 
student
,subject
,assignments;
hgtggwj0

hgtggwj01#

这就是你要找的:

SELECT 
  s.`student_name`,
  sub.`subject_name`,
  IFNULL(a.`description`,'') description,
  (CASE WHEN a.`score` IS NULL THEN 'Pending'
        WHEN a.`score`>=5 THEN 'Passed'
        ELSE 'Exam' END) `status`,
  IFNULL(a.`submission_date` ,'') submission_date
FROM
  `student` s 
  LEFT JOIN `Subject` sub  ON s.`subject_id` = sub.`subject_id` 
  LEFT JOIN `Assignments` a  ON a.`student_id` = s.`student_id`

从没有表关系的多个表中选择将得到Cartesian product of all associated tables

相关问题