【问题标题】:Select records even if doesn't exists即使不存在也选择记录
【发布时间】:2018-06-08 04:21:45
【问题描述】:

我有 4 个表的数据库:

  1. 第一个表代表房间,有一个名为“RoomNumber”的列。
  2. 第二个表是 Hours,只有一列“HourNumber”。
  3. 第三个表是 Days,有两列“DayNumber”和“DayName”。
  4. 最后一张表是房间的时间表,它是其他三个表之间的关系表。

最后一个表有以下列:

  • 房间号
  • 天数
  • 小时数
  • 主题(特定时间和日期发生的事情)

但此表仅存储具有主题的房间的记录(它只保留房间的繁忙时间),它不会显示具有空主题的记录,因此它无法显示所选房间何时可用(没有主题意味着房间很干净)。

我想以某种方式编写一个查询,该查询将为我提供特定日期和小时内所有房间的状态。

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

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

但是我想得到所有房间在特定时间的状态,我知道其余的记录不存在。

有没有办法做这样的事情?

【问题讨论】:

  • 使用外连接
  • 向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example
  • 请分享样本数据,以及预期的结果。根据您的确切需求,您可能需要使用虚拟表进行外部联接,这需要在 Access 中使用一些技巧。
  • 我很难解释它,但例如表格: RoomNumber DayNumber HourNumber Subject 23 1 1 DiscussionA 24 1 2 DiscussionB 25 1 1 DiscussionC 26 2 3 DiscussionD 27 3 1 DiscussionE 上述查询将返回: RoomNumber DayNumber HourNumber Subject 23 1 1 DiscussionA 25 1 1 DiscussionC 但我想要这样的东西: RoomNumber DayNumber HourNumber Subject 23 1 1 DiscussionA 24 1 1 null 25 1 1 讨论C 26 1 1 null 27 1 1 null
  • 抱歉,我不确定如何在可读表格中编辑它:(

标签: sql ms-access


【解决方案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;

【讨论】:

  • 不幸的是这个查询不起作用,它给我一个备忘录字段的错误
  • @黑狼。 . .问题中的任何地方都没有提到“备忘录”字段。你的评论没有意义。
猜你喜欢
  • 1970-01-01
  • 2011-08-20
  • 2018-08-14
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 2015-01-26
相关资源
最近更新 更多