2013-04-23 5 views
0

У меня есть система в гостинице с thesw 2 столамиMySQL запросов (присоединиться)

столиков стол

reservation_id pk 
Start_Date 
End_Date 
Customers_Customer_id fk 
Rooms_Room_id fk 

Номера

Room_id pk 
type 
floor 
price 

у меня есть этот query, чтобы получить доступно комнат

$sql="SELECT Room_id,type,room_floor,price FROM rooms 
LEFT JOIN reservation 
ON rooms.Room_id = reservation.Rooms_Room_id 
where rooms.type='$_POST[type]' 
and Start_Date !='$_POST[from]' 
and End_Date !='$_POST[to]'" 

поэтому результат хорошо, но это просто дать мне номера в таблице бронирования я хочу номера в таблице бронирования, но не в искомом даты плюс другие номера в таблице номеров

+0

Не для большого количества людей mysql, однако не использовал бы '$ _POST', как это! Сначала санитировать! читайте здесь http://stackoverflow.com/questions/3645131/what-is-a-good-method-to-sanitize-the-whole-post-array-in-php И здесь http://stackoverflow.com/questions/4861053/php-sanitize-values-of-a-array/ – Grmn

+0

думает, что я знаю, что сайт - это озеро безопасности, это просто проект для моего коллажа, он не будет опубликован онлайн – user2309797

ответ

0

При добавлении условий на левой внешней присоединяемой таблицы в котором положение ведет себя как внутреннее соединение, это должно исправить ваш текущий запрос,

$sql="SELECT Room_id,type,room_floor,price FROM rooms 
LEFT JOIN reservation 
ON rooms.Room_id = reservation.Rooms_Room_id 
and Start_Date !='$_POST[from]' 
and End_Date !='$_POST[to]' 
where rooms.type='$_POST[type]'" 

Однако ваш не будет возвращать правильный результат, вы можете изменить свой запрос к этому

$sql="SELECT Room_id,type,room_floor,price FROM rooms 
WHERE room_id not in 
(
    --find all rooms that are unavailable 
    SELECT Room_id FROM rooms 
    INNER JOIN reservation ON rooms.Room_id = reservation.Rooms_Room_id 
    WHERE NOT ('$_POST[to]' < start_date or '$_POST[from]' > end_date) 
    AND rooms.type='$_POST[type]' 
) AND type='$_POST[type]'" 
+0

спасибо, что человек работал как шарм после смены места типа номера – user2309797

Смежные вопросы