Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在CASE-SQL时添加语句_Mysql_Sql - Fatal编程技术网

Mysql 在CASE-SQL时添加语句

Mysql 在CASE-SQL时添加语句,mysql,sql,Mysql,Sql,我有这样的桌子: 这是我关于显示房间可用性的问题 SELECT hotel.nama_hotel, hotel.kota, room.id_room, room.position, room.price, room_price.date_start, room_price.date_end, room_price.price FROM room JOIN hotel on room.id_hotel = hotel.id_hotel JOIN room_price on ro

我有这样的桌子:

这是我关于显示房间可用性的问题

SELECT 
hotel.nama_hotel,
hotel.kota,
room.id_room,
room.position,
room.price,
room_price.date_start,
room_price.date_end,
room_price.price
FROM room
    JOIN hotel on room.id_hotel = hotel.id_hotel
    JOIN room_price on room.id_room = room_price.id_room
    WHERE 
        (
            room.id_room NOT IN 
            (
            SELECT id_room FROM booking 
                WHERE 
                (
                    booking_start BETWEEN '2018-02-10' AND '2018-02-11' OR 
                    booking_end   BETWEEN '2018-02-10' AND '2018-02-11' OR 
                    '2018-02-10'  BETWEEN booking_start AND booking_end OR
                    '2018-02-11'  BETWEEN booking_start AND booking_end
                ) 
            )
        )
    AND (room.status = 1) 
    AND (hotel.kota="Bandung")
    AND (room.position = "earth")
我从表
room
和表
room\u price
中得到了两列价格

当插入的日期介于
房间价格之间时,我需要一列价格。日期开始
房间价格。日期结束
和价格显示在表
房间价格
room\u price.date\u start
room\u price.date\u end
之间不启用时,价格显示在表
room

这样做可能吗

编辑

这就是问题所在

SELECT 
hotel.nama_hotel,
hotel.kota,
room.id_room,
room.position,
room_price.date_start,
room_price.date_end,
    (
        CASE WHEN 
        (
            '2018-02-10' BETWEEN room_price.date_start AND room_price.date_end
        )THEN  
        room.price = room_price.price
        ELSE room.price = room.price END
    ) as price from room 



   JOIN hotel on room.id_hotel = hotel.id_hotel
    JOIN room_price on room.id_room = room_price.id_room
    WHERE 
        (
            room.id_room NOT IN 
            (
            SELECT id_room FROM booking 
                WHERE 
                (
                    booking_start BETWEEN '2018-02-10' AND '2018-02-11' OR 
                    booking_end   BETWEEN '2018-02-10' AND '2018-02-11' OR 
                    '2018-02-10'  BETWEEN booking_start AND booking_end OR
                    '2018-02-11'  BETWEEN booking_start AND booking_end
                ) 
            )
        )
    AND (room.status = 1) 
    AND (hotel.kota="Bandung")
    AND (room.position = "earth")

但是我没有得到
price
=
room\u price.price

你错过了
room.price后面第9行之后的
,当你打开一个括号
)时,SQL认为你在调用一个函数
room.price()
在你的选择中使用IF(),这会节省你的时间

hotel.nama_hotel,
hotel.kota,
room.id_room,
room.position,
room_price.date_start,
room_price.date_end,
IF('2018-02-10' BETWEEN room_price.date_start AND room_price.date_end, room_price.price, room.price)
FROM room
INNER JOIN hotel ON room.id_hotel = hotel.id_hotel
INNER JOIN room_price ON room.id_room = room_price.id_room
WHERE 
    room.id_room NOT IN( 
    SELECT id_room 
    FROM booking 
    WHERE 
        booking_start BETWEEN '2018-02-10' AND '2018-02-11' OR 
        booking_end   BETWEEN '2018-02-10' AND '2018-02-11' OR 
        '2018-02-10'  BETWEEN booking_start AND booking_end OR
        '2018-02-11'  BETWEEN booking_start AND booking_end

                    )
AND (room.status = 1) 
AND (hotel.kota="Bandung")
AND (room.position = "earth")
我不确定你是否需要房间。房间是否不在(…)内,如图所示

IF('2018-02-10' BETWEEN room_price.date_start AND room_price.date_end, room_price.price, room.price)
将检查日期,如果是真的,则将从room_price.price返回价格,如果是假的,则将返回room.price

更多信息


这可以修复错误,但我无法从
price\u room