mysql请求 - 寻找不存在的记录

时间:2013-04-17 15:02:58

标签: mysql

我有一个简单的教室预订系统,有两个表:

房间:

 1. id
 2. name
 3. localisation

日历:

 1. id
 2. idroom
 3. year
 4. month
 5. days

天是一个31个字符的字符串(每天1个字符)。人物可以是:“0”免费;第一步预订“1”;被占用的“3”

日历是在需要的时候创建的,所以我的问题是当我要求没有被占用的教室时,要在我检查的期间内没有日历条目的教室。 例如,课堂1从2013年12月1日至2013年2月3日被占用,我没有更多的入场券 在我的课堂日历表中。如果我要求从2013年12月1日到2013年12月4日预订,我不知道如何在我的结果中使用classroom1。月也可以是零和年。 我尝试左连接,“是空”但没有成功。

这是我的请求的第一部分,但是在此期间没有显示“没有日历的房间”:

SELECT DISTINCT room.id
FROM room LEFT JOIN
     calendar
     ON room.id=calendar.idroom
WHERE (calendar.year=2013 AND calendar.month=12 and calendar.days like "0000%") 

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

问题是where子句使用calendar表,因此它正在撤消left join的效果。您可以通过将逻辑混合到on子句中来解决此问题:

SELECT DISTINCT room.id
FROM room LEFT JOIN
     calendar
     ON room.id=calendar.idroom and
        (calendar.year=2013 AND calendar.month=12 and calendar.days like "0000%")