我正在参加考勤项目。在那里,我将存储在表'出勤'中特定日期缺席的学生用字段 - > SNO,rollno,subject_code,日期。如果所有学生都在场,那么我会将subject_code,date和rollno存储为NULL,这意味着“所有学生都在场”
------|--------|------------|-----------|
sno |rollno |subject_code| date |
1 | 1234 | a110 | 12-12-2012|
2 | 1235 | a110 | 12-12-2012|
3 | 1235 | a111 | 14-12-2012|
我从表'学生'的学生那里获取学生的详细信息 - > rollno,名称
|--------|-------|
| rollno | name |
| 1234 | xyz |
| 1235 | abc |
| 1236 | mno |
| 1237 | qrs |
现在我想列出学生的出勤率,以便输出应该是这样的特定日期假设列表的日期“12-12-2012”
list of "12-12-2012" for subject a110 list of "14-12-2012" for subject a111
|-------|------|---------| |-------|------|---------|
|rollno | name | status | |rollno | name | status |
| 1234 | xyz | Absent | | 1234 | xyz | Present |
| 1235 | abc | Absent | | 1235 | abc | Absent |
| 1236 | mno | Present | | 1236 | mno | Present |
| 1237 | qrs | Present | | 1237 | qrs | Present |
请帮助我..
答案 0 :(得分:1)
使用LEFT JOIN
找出哪个学生在考勤表中没有一行。 (存在的那些)
SELECT s.rollno,
s.name,
CASE WHEN a.rollno IS NULL THEN 'Present'
ELSE 'Absent'
END as status
FROM student s
LEFT JOIN attendance a
ON s.rollno = a.rollno