我有两张表tblteacher
和tblattendance
。我想找到在特定日期标记出勤的老师。说,在2013-07-02。如果教师的名字存在于桌面上,tblteacher
它应该显示为是状态,如果不是,则为否。
SELECT distinct tblteacher.tshortname
FROM tblteacher
LEFT JOIN tblattendance
ON tblteacher.tshortname = tblattendance.tshortname
WHERE tblattendance.attdate = '2013-07-02';
我在特定日期获得了常见数据。但是如何确定状态...
答案 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';