【问题标题】:hotel booking SQL query not working酒店预订 SQL 查询不起作用
【发布时间】:2016-11-10 16:06:03
【问题描述】:

我有两张桌子:

房间

id  
category_id  
name  
description 
image  
price  
arrival_date  
depature_date  
status  

预订

id  
name  
email  
mobile  
category_id  
room_id  
arrival  
departure  

第一季度。如何查看房间是否可供客户使用?
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' ))

【问题讨论】:

  • 您的子查询为 where 子句返回多个结果。这就是为什么您会收到该错误。尽管阅读了您的子查询,但我不确定为什么。您使用的是哪个 DBMS?
  • 我正在使用 WAMP MYSQL 数据库

标签: php mysql sql select


【解决方案1】:

主要问题是,在内部查询中,您得到的结果列太多。

试试:

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' ))

【讨论】:

  • 更改列名会有什么不同?
  • 我想我不明白这个问题。只需将内部查询的“*”替换为“room_id”即可。如果您需要更改列名,您也必须更改 SQL。
  • 对不起,我有一个愚蠢的时刻
  • 添加一个新的类别表 #col-- id category des image price quantity #record 1, Standard Double Room, description, 200, 10 我想用这个查询获取类别名称 SELECT * FROM room WHERE status = '1' AND id NOT IN (SELECT room_id from booking WHEREarrival='$arrival' OR (arrival BETWEEN '$arrival' AND '$departure')) SELECT * FROM room WHERE status = '1' AND id NOT IN ( SELECT room_id FROM booking WHEREarrival='2/08/2013' 或(arrival BETWEEN '2/08/2013' AND '22/08/2013' ))
【解决方案2】:

为了您的问题:

第一季度。我如何检查客户是否可以使用房间

我想没有预订的房间可供客户使用,所以试试这个:

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')
)

第二季度。我想显示用户输入日期为空的房间列表

查询是相同的,如果在该时间间隔内没有任何预订,则房间是空的(因此可以预订)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多