合并MYSQL中的两列

时间:2016-01-12 15:51:04

标签: mysql

我正在参加考勤项目。在那里,我将存储在表'出勤'中特定日期缺席的学生用字段 - > 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 | 

请帮助我..

1 个答案:

答案 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