2013-03-10 139 views
0

我有2個表,Facility和Reservation表。關於預訂檢查的SQL查詢

設施表包含,

  • FacilityID
  • 類型
  • 名稱
  • 可用性

預約表,

  • ID
  • MEMBERID
  • FacilityID
  • 入住日期
  • 入住時間

這裏是我的查詢它只能返回保留的細節。我怎樣才能使查詢返回這些毫無保留的設施細節?

SELECT Facility.[Facility Name], Facility.[Facility Type] 
FROM Facility INNER JOIN Reservation on Facility.FacilityID = Reservation.FacilityID 
WHERE Reservation.FacilityID = (
    SELECT FacilityID 
    FROM Reservation 
    WHERE MemberID = '" & txtMemberID.Text & "' 
    AND [Check-in date] ='" & lstDate.SelectedItem.ToString & "') 
+0

這只是我嘗試過很多辦法和方法,但仍分配目的無法得到我想要的結果。 – zombieblood 2013-03-10 04:10:22

+0

那麼我們如何知道它是毫無保留的? – 2013-03-10 04:11:11

+0

這是我無法弄清楚的事情。請指導我。 – zombieblood 2013-03-10 04:11:55

回答

0

您可以使用LEFT OUTER JOIN和IS NULL來僅返回預訂表中沒有記錄的行。

以下查詢將返回FacilityID,MemberID和Check-In日期的Reservation表中沒有匹配的所有設施。您可以刪除MEMBERID和入住的部分,如果你想看看他們是否有任何成員,任何登記入住日期預訂

SELECT Facility.[Facility Name], Facility.[Facility Type] 
FROM Facility 
    LEFT OUTER JOIN Reservation on Facility.FacilityID = Reservation.FacilityID 
    AND MemberID = '" & txtMemberID.Text & "' // pull in based on certain member 
    AND [Check-in date] ='" & lstDate.SelectedItem.ToString & "') // pull in based on certain date 
WHERE Reservation.ID IS NULL 
+0

因此,它會返回所有**由特定成員保留的設施?這是什麼要求> – 2013-03-10 04:17:30

+0

@ PM77-1是的,因爲這就是他要求的。如果成員不是約束,它可以被刪除。 – 2013-03-10 04:18:17

+0

希望OP澄清他/她的要求。 – 2013-03-10 04:19:21