关于两个表之间的数据比较的Mysql查询

时间:2013-09-05 08:24:39

标签: mysql sql

enter image description here

我有两张表tblteachertblattendance。我想找到在特定日期标记出勤的老师。说,在2013-07-02。如果教师的名字存在于桌面上,tblteacher它应该显示为是状态,如果不是,则为否。

SELECT distinct tblteacher.tshortname
    FROM tblteacher
    LEFT JOIN tblattendance
    ON tblteacher.tshortname = tblattendance.tshortname
    WHERE tblattendance.attdate = '2013-07-02';

我在特定日期获得了常见数据。但是如何确定状态...

2 个答案:

答案 0 :(得分:0)

你的意思是这样的吗?

SELECT IF(t.tshortname IS NOT NULL,'yes','no')
  FROM  tblattendance AS a
  LEFT JOIN tblteacher AS t
  USING (tshortname)
  WHERE a.attdate = 20130702;

答案 1 :(得分:0)

你应该使用RIGHT JOIN。正如in mysql doc reference所解释的,如果连接表A和B,如果表B中没有匹配的行,它仍会返回表A中的行。

SELECT t.shortname, CASE WHEN a.tshortname IS NULL THEN 'no' ELSE 'yes' END as marked_attendance
  FROM  tblteacher t 
  RIGHT JOIN tblattendance a
  USING (tshortname)
  WHERE a.attdate = '2013-07-02';