首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -连接操作多个表

MySQL -连接操作多个表
EN

Stack Overflow用户
提问于 2016-02-08 08:45:38
回答 1查看 113关注 0票数 0

我正在创建一个在线考勤系统,我的问题是下面的一个查询没有带回正确的数据。

我想要拿回一张学生证,一张班级ID,以及那个班迟到或缺课的情况。

如果接受了考勤,那么查询就可以运行了。但是,如果没有考勤,查询将返回一个空集。

我仍然期待返回所有的数据,但有'null‘或任何在’出勤状态‘栏,如果出席还没有采取。

这是查询

如果这门课的出勤率被录取了,它还会带回这些结果

然而,,如果没有出席,那么它只会返回一个空集。我想要的是在考勤栏中打印'null‘或任何东西,以确保某些数据仍然返回。

至少我还需要这个类和学生的ID,我想它可能需要一个连接,我就是无法理解它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-08 08:57:29

您应该使用适当的联接语法!这会造成很多问题,而且很难理解。

您需要的是一个左连接,它可以在要左联接的表的条件之后使用(+)--不要这样做。

您的查询应该是:

代码语言:javascript
运行
复制
 SELECT class.class_id as 'Class_ID',
        student.Student_ID as 'Student_ID',
        case when attendence.attendence_status is null then 'Not Present' else attendence.attendence_status end as 'attendence_status'
FROM Student
INNER JOIN Student_Has_Class ON(student_has_class.student_id = student.student_id)
INNER JOIN class ON(class.class_id = student_has_class.class_id)
INNER JOIN Subject ON(class.subject_id = subject.subject_id)
LEFT JOIN Attendence on(attendence.class_id = class.class_ID
                        AND attendence.student_id = student.student_id)
WHERE NOW() between class.class_start_timestamp and class.class_end_timestamp
AND Student.student_id like '1'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35265419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档