即使不存在,也要选择记录

时间:2018-06-04 19:59:22

标签: sql ms-access

我有4个表的数据库:

  1. 第一张表格代表房间,有一列名为" RoomNumber"。
  2. 第二个表是小时,有单列" HourNumber"。
  3. 第三个表是天,有两列" DayNumber"和" DayName"。
  4. 最后一张桌子是房间的TimeTables,它是其他三张桌子之间的关系表。
  5. 最后一个表格包含以下列:

    • RoomNumber
    • DayNumber
    • HourNumber
    • 主题(特定时间和日期发生的事情)

    但是这个表只存储房间有主题的记录(它只保留繁忙时间的房间),它不会显示空主题的记录,因此当所选房间可用时它无法显示(没有主题意味着房间很清晰。)

    我想以某种方式编写一个查询,告诉我特定日期和时间内所有房间的状态。

    例如,此查询返回第1天,第1小时的所有繁忙房间:

    SELECT *
    FROM TimeTables
    WHERE HourNumber = 1 AND DayNumber = 1
    

    但我希望在特定时间获得所有房间的状态,我知道其余的记录都不存在。

    有没有办法做类似的事情?

1 个答案:

答案 0 :(得分:1)

如果你想要MS Access中房间的状态,我认为相关子查询是最简单的方法:

select r.*,
       (select tt.subject
        from TimeTables as tt
        where tt.RoomNumber = r.RoomNumber and tt.HourNumber = 1 and tt.DayNumber = 1
       ) as subject_1_1
from rooms as r;