簡體   English   中英

酒店預訂SQL查詢不起作用

[英]hotel booking SQL query not working

我有兩個表:

房間

id  
category_id  
name  
description 
image  
price  
arrival_date  
depature_date  
status  

預訂

id  
name  
email  
mobile  
category_id  
room_id  
arrival  
departure  

Q1。 如何檢查客戶是否有空房間?
Q2。 我想顯示用戶輸入日期為空的房間列表

我正在使用此查詢,它給我error #1241 - Operand should contain 1 column(s)

SELECT * FROM room WHERE status = '1' AND id NOT IN 
    (SELECT * FROM booking
    WHERE arrival='$arrival' 
    OR ( arrival BETWEEN '$arrival' AND '$departure' ) )

SELECT * FROM room WHERE status = '1' AND id NOT IN
    (SELECT * FROM booking WHERE arrival='2/08/2013'
    OR ( arrival BETWEEN '2/08/2013' AND '22/08/2013' ))

主要問題在於,在內部查詢中,您得到的列過多。

嘗試:

SELECT * FROM room WHERE status = '1' AND id NOT IN
    ( SELECT room_id FROM booking
    WHERE arrival='$arrival'
    OR ( arrival BETWEEN '$arrival' AND '$departure' ))

SELECT * FROM room WHERE status = '1' AND id NOT IN
    ( SELECT room_id FROM booking
    WHERE arrival='2/08/2013'
    OR ( arrival BETWEEN '2/08/2013' AND '22/08/2013' ))

為了您的問題:

Q1。 我如何檢查房間是否可供客戶使用

我想一個沒有預訂的房間可供客戶使用,因此請嘗試以下操作:

SELECT *
FROM room r
WHERE NOT EXISTS(
    SELECT 'booking'
    FROM booking b
    WHERE b.room_id = r.id
    AND  (b.arrival BETWEEN '$arrival' AND '$departure')
)

Q2。 我想顯示用戶輸入日期為空的房間列表

查詢是相同的,如果在該時間間隔內不存在任何預訂,則房間為空(因此可用於預訂)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM