所以我有3个表:
客户 = ClientID,ClientName,
房间 = RoomID,RoomName
预订 = BookingID,RoomID,ClientID,状态(3个可能的值:预订,签入,签出),CheckInDate,CheckOutDate
RoomID和ClientID与预订表中的字段具有一对多的关系
我的目标是创建一个查询,显示当前时间内的所有房间,并显示他们的状态以及每个房间的信息(如果有的话)以及他们检查每个房间的检查时间: / p>
RoomStatus = RoomName,状态(4个可能的值:空,预订,签入,签出(可能不需要,因为不再在房间内使用ocupant)),ClientName,CheckInDate, CheckOutDate
我设法创建了一个简单的查询,使用表格之间的关系来显示所有当前使用的房间,显示我需要的所有信息。但是,当我无法在查询中显示未使用的房间时,问题就出现了。由于状态字段位于预订表中以保持简单,因此房间表没有自己的状态字段可供使用。
我试图通过使用房间ID字段显示房间的所有记录来进行空查询,并使新字段与具有空值的工作字段类似,并尝试离开连接并将其与工作联合起来一。但是,左连接只选择类似的记录,它最终只显示与之前相同的东西,并且union提供重复。但我认为这种方法应该是"凌乱"如果确实有效。
所以我对任何其他比我提出的方法要好得多的方法持开放态度。非常感谢你。
答案 0 :(得分:0)
我认为这是你想要实现的目标
select *
from @room c
left join
(
select b.*
from @Room r
inner join @Booking b on r.RoomID = b.RoomID
inner join @Client c on c.ClientID = b.ClientID
where CheckInDate = '02/03/2016'
) a on a.RoomID = c.RoomID
在MS Access中,可以分两步完成。第一步将创建查询,显示此查询的结果。
select b.*
from @Room r
inner join @Booking b on r.RoomID = b.RoomID
inner join @Client c on c.ClientID = b.ClientID
where CheckInDate = '02/03/2016'
在第二步中,您将在桌面房间的QUERY上方进行左连接。显示来自表空间的所有记录,仅显示连接匹配的上述查询中的记录。