gpt4 book ai didi

mysql - 选择特定日期有空的老师

转载 作者:行者123 更新时间:2023-11-29 08:03:50 26 4
gpt4 key购买 nike

我有一个包含以下字段的教师表

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

这将返回在给定日期的可用表中没有记录的所有教师。

请参阅有关 ANTI JOIN 的链接(表 1 中不在表 2 中的所有值)。

或者您可以使用 NOT EXISTS:

SELECT *
FROM teachers
WHERE
NOT EXISTS (SELECT *
FROM available
WHERE teachers.id = available.teacher_id
AND available.date = '2014-04-23')

关于mysql - 选择特定日期有空的老师,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23117262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com