-1

在此处输入图像描述

我有两张桌子,即tblteachertblattendance。我想找到在特定日期标记出勤的老师。说,在 2013 年 7 月 2 日。如果教师的名字存在于表中,tblteacher 则状态应显示为“是”,否则应显示“否”。

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

我得到了特定日期的共同数据。但是如何修复状态...

4

2 回答 2

0

您应该使用 RIGHT JOIN。如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';
于 2013-09-05T09:13:29.890 回答
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;
于 2013-09-05T08:52:48.737 回答