2014-03-05 170 views
0
SELECT DISTINCT 
    Room.RoomID, 
    Room.RoomNumber, 
    Room.PhoneExtension, 
    Room.SpecialNotes , 
    RoomType.Description 

FROM   
    Room 

INNER JOIN 
    RoomType 
ON 
    Room.TypeID = RoomType.TypeID 

LEFT JOIN 
    Reservation 
ON 
    Room.RoomID = Reservation.RoomID 

WHERE 
    Room.DeleteFlag=0 AND 
    (Reservation.ResStatus <> 'Occupied' OR Reservation.ResStatus = NULL) AND 
    (Reservation.ResStatus <> 'Reserved' OR Reservation.ResStatus = NULL) AND 
    (Reservation.ResStatus <> 'Confirmed' OR Reservation.ResStatus = NULL) 

ORDER BY 
    RoomNumber 

你好,我有一个删除房间表格,应该标记一个房间在数据库中被删除。房间ID也会在预订时发布到预订表中。我试图让所有没有出现在预订中的房间,或者如果他们在那张桌子上,那么他们不应被保留,占用或确认。过滤SQL查询

无论预订状态如何,以及没有没有预定状态的房间,查询都会让我回到所有预订时显示的房间。

任何提示将不胜感激。

回答

1

也许我missunderstand你的问题,但试试这个:

SELECT DISTINCT 
    Room.RoomID, 
    Room.RoomNumber, 
    Room.PhoneExtension, 
    Room.SpecialNotes , 
    RoomType.Description 
FROM   Room 
    INNER JOIN RoomType ON Room.TypeID = RoomType.TypeID 
    /*LEFT JOIN Reservation ON Room.RoomID = Reservation.RoomID*/ 
WHERE Room.DeleteFlag=0 And Room.RoomID not in (select RoomID from Reservation where 
    (Reservation.ResStatus <> 'Occupied' OR Reservation.ResStatus = NULL) 
    AND (Reservation.ResStatus <> 'Reserved' OR Reservation.ResStatus = NULL) 
    AND (Reservation.ResStatus <> 'Confirmed' OR Reservation.ResStatus = NULL)) 
ORDER BY RoomNumber 
+1

因为你在倒车的第二选择查询,我改变了<>为=,不包括空值,并加入他们或代替的AND。工作的一种享受,感谢提示 – PrOjEkTeD