我正在尝试为酒店创建一个简单的数据库。它应该照顾所有预订。我正在尝试执行一个程序,该程序将在给定日期搜索未预订的房间。但是,我无法获得任何“完美的主意”,甚至无法完成我的主意。
我已经有一个充满数据的工作数据库,但是没有任何程序。我试图制作一个使用LOOP和IF的过程,但是没有成功。后来有人告诉我这是一个愚蠢的主意。
谁能给我任何想法,什么是错甚至更好,如何使整个过程正常进行?
这是给定桌子的照片
DELIMITER //
/*Here I intake in order: How many people want to book a room, arrival date, departure date*/
CREATE PROCEDURE wolnePokoje(IN ilosc int, IN poczatek date, IN koniec date)
BEGIN
/*Here I select room Numbers and how many people the room can accommodate*/
SELECT Pokoj.RoomID, Pokoj.IloscMiejsc
/*There is an inner join (INNER may not be correct) of ROOMS and BOOKINGS. */
FROM Pokoj INNER JOIN Rezerwacje ON Pokoj.BookID = Rezerwcje.BookID
/*This WHERE tell me if a Room is booked. (WHERE NOT may not be correct, just like the whole WHERE)*/
WHERE NOT((poczatek < Rezerwacje.DataPrzyjazdu AND poczatek > Rezerwacje.DataOdjazdu) OR ((koniec < Rezerwacje.DataPrzyjazdu) AND (koniec > Rezerwacje.DataOdjazdu))
/*This WHERE I check if a room can accommodate given number of people, it's like "AND number <= numberRoomCanAccommodate"*/
AND ilosc <= Pokoj.IloscMiejsc;
END //
DELIMITER ;
答案 0 :(得分:0)
您的评论未正确关闭,而缺少)用于关闭NOT子句
SELECT Pokoj.RoomID, Pokoj.IloscMiejsc
/*There is an inner join (INNER may not be correct) of ROOMS and BOOKINGS. */
FROM Pokoj INNER JOIN Rezerwacje ON Pokoj.BookID = Rezerwcje.BookID
/*This WHERE tell me if a Room is booked. (WHERE NOT may not be correct, just like the whole WHERE)*/
WHERE NOT((poczatek < Rezerwacje.DataPrzyjazdu AND poczatek > Rezerwacje.DataOdjazdu)
OR ((koniec < Rezerwacje.DataPrzyjazdu) AND (koniec > Rezerwacje.DataOdjazdu)))
^here