Mysql 选择在特定日期可用的教师
我有一个包含以下字段的教师表Mysql 选择在特定日期可用的教师,mysql,sql,Mysql,Sql,我有一个包含以下字段的教师表 id | name ---------------- 1 | Teacher 1 2 | Teacher 2 3 | Teacher 3 ---------------- 另一个名称可用的表 id | teacher_id | date ------------------------------- 1 | 2 | 2014-04-23 2 | 3 | 2014-04-22 -----
id | name
----------------
1 | Teacher 1
2 | Teacher 2
3 | Teacher 3
----------------
另一个名称可用的表
id | teacher_id | date
-------------------------------
1 | 2 | 2014-04-23
2 | 3 | 2014-04-22
-------------------------------
学生可以使用以下查询搜索某一天是否有教师
SELECT *
FROM teachers, available
WHERE available.teacher_id = teachers.id
AND available.date = "2014-04-23"
LIMIT 0 , 30
到现在为止一切都很好
现在的变化是:默认情况下,教师每天都有空。因此,可用表开始仅存储特定教师不可用的日期
现在问题是使用下面的查询,我可以得到在某一天有空的教师,如果他们在可用性表中有任何条目
SELECT *
FROM teachers, available
WHERE available.teacher_id = teachers.id
AND available.date != "2014-04-23"
LIMIT 0 , 30
由于教师1在可用性表中没有条目,并且默认情况下所有教师每天都可用,因此我无法使用上述查询列出他/她
有人能帮我找到解决方案吗?您需要使用左连接:
SELECT techers.*
FROM
teachers LEFT JOIN available
ON teachers.id = available.teacher_id
AND avaliable.date = '2014-04-23'
WHERE
available.teacher_id IS NULL
这将返回所有在给定日期的可用表中没有记录的教师
请参阅此链接(表1中不在表2中的所有值)
或者您可以使用“不存在”:
SELECT *
FROM teachers
WHERE
NOT EXISTS (SELECT *
FROM available
WHERE teachers.id = available.teacher_id
AND available.date = '2014-04-23')
谷歌左外或右外可能重复感谢@RickS,我会做的。