[英]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.