Я делаю проект для туристического агентства. я должен joing 3 таблицыКак написать запрос для этого условия
vehicle_details
который я хранить все детали автомобиляrac_details
заказанные детали автомобиляowner
владельцев транспортных средств Детали
При бронировании мне нужно искать транспортные средства, доступные в том, что диапазон дат в rac_details
.
$qry=" SELECT `vehicle_details`.*, `owner`.`owner_name`, `owner`.`id` As owner_id,
`rac_details`.`from_date`, `rac_details`.`to_date`,
`rac_details`.`vehicle_id`
FROM (`vehicle_details`)
LEFT JOIN `rac_details` ON `rac_details`.`vehicle_id`=`vehicle_details`.`id`
AND `rac_details`.`from_date` NOT BETWEEN $from_timestamp AND $to_timestamp
AND `rac_details`.`to_date` NOT BETWEEN $from_timestamp AND $to_timestamp
JOIN `owner` ON `owner`.`id`=`vehicle_details`.`owner_id`
WHERE `vehicle_details`.`model_id` = '$model_id' ";
По вышеуказанному запросу я получаю все детали автомобиля. когда inner join
rac_details
Я не могу получить только что добавленный автомобиль, который не имеет записи в rac_details
. Надежда кто-нибудь может помочь мне
Редактировать
Например я получил номер для Polo с регистрационным нет XX-YY-ZZ с февраля 27-го до 3 марта, то мне нужно искать ли автомобиль xx- yy-zz доступен в те дни, потому что я только что искал в своих rac_details, где я хранил забронированные детали автомобиля. Тогда мы купили новый автомобиль Vento с регистрационными не RR-TT-YY, так что я добавил, что автомобиль в моей таблице vehicle_details и никаких записей не будут добавлены rac_details до первого заказа
если я записать этот запрос
$qry=" SELECT `vehicle_details`.*, `owner`.`owner_name`, `owner`.`id` As owner_id, `rac_details`.`from_date`, `rac_details`.`to_date`, `rac_details`.`vehicle_id` FROM (`vehicle_details`) JOIN `rac_details` ON `rac_details`.`vehicle_id`=`vehicle_details`.`id` AND `rac_details`.`from_date` NOT BETWEEN $from_timestamp AND $to_timestamp AND `rac_details`.`to_date` NOT BETWEEN $from_timestamp AND $to_timestamp JOIN `owner` ON `owner`.`id`=`vehicle_details`.`owner_id` WHERE `vehicle_details`.`model_id` = '$model_id' ";
, когда я забронировать Vento в первый раз он не будет показывать Vento в списке, так как нет ни одной записи в rac_details
для Vento
На первый взгляд ваше утверждение SELECT кажется невероятно длинным и сложным. Могло ли быть упрощено? Чем сложнее любой код, тем сложнее его отлаживать. Предложите для простоты, где это возможно, или можно написать запрос SELECT по-разному. Вы уверены, что данные сохраняются в таблице rac_details при ее бронировании? Что делает запрос SELECT для rac_details? Вам нужно обновить таблицу? –
@Borges мне просто нужно получить список транспортных средств, доступных в данный диапазон дат. и я сохраняю забронированные детали в таблице 'rac_details'. сближение с запросом. – Juice