xandeb 0 Denunciar post Postado Julho 15, 2015 Boa tarde pessoal, procurei a solucao do meu problema que vou descrever mesmo assim nao encontrei. Seguinte tenho um sistema em PHP de reserva de veiculos. A finalidade é o cliente vai fazer a solicitacao do veiculo em uma dataInicial com horaInicial e dataFinal com horaFinal da reserva. Meu problema esta em separar agora os veiculos disponiveis para as demais reservas ou seja. Veiculo 1 reservado para 15/07/2015 as 08:00 até 15/07/2015 até as 13:00. Se outro cliente querer reservar um veiculo, esse veiculo 1 so pode aparecer disponivel depois dessa data e horario, mostrando apenas os demais veiculos que nao tem reserva nesse periodo. Acho que consegui explicar. Tabelas do sistema: CREATE TABLE IF NOT EXISTS `reservas` ( `id_reserva` int(10) NOT NULL AUTO_INCREMENT, `datainicial` date DEFAULT NULL, `datafinal` date DEFAULT NULL, `horainicial` time DEFAULT NULL, `horaaprox` time DEFAULT NULL, `rota` text, `cidades_id_cidade` int(10) NOT NULL, `setores_id_setor` int(10) NOT NULL, `usuarios_id_usuario` int(10) NOT NULL, `regioes_id_regiao` int(10) NOT NULL, `veiculos_id_veiculo` int(10) NOT NULL, `motoristas_id_motorista` int(10) NOT NULL, PRIMARY KEY (`id_reserva`), KEY `fk_reservas_cidades1_idx` (`cidades_id_cidade`), KEY `fk_reservas_setores1_idx` (`setores_id_setor`), KEY `fk_reservas_usuarios1_idx` (`usuarios_id_usuario`), KEY `fk_reservas_regioes1_idx` (`regioes_id_regiao`), KEY `fk_reservas_veiculos1_idx` (`veiculos_id_veiculo`), KEY `fk_reservas_motoristas1_idx` (`motoristas_id_motorista`) ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS `veiculos` ( `id_veiculo` int(10) NOT NULL AUTO_INCREMENT, `modelo` varchar(50) DEFAULT NULL, `placa` varchar(10) DEFAULT NULL, `motoristas_id_motorista` int(10) NOT NULL, `regioes_id_regiao` int(10) NOT NULL, `cidades_id_cidade` int(10) NOT NULL, `setores_id_setor` int(10) NOT NULL, PRIMARY KEY (`id_veiculo`), KEY `fk_veiculos_motoristas1_idx` (`motoristas_id_motorista`), KEY `fk_veiculos_regioes1_idx` (`regioes_id_regiao`), KEY `fk_veiculos_cidades1_idx` (`cidades_id_cidade`), KEY `fk_veiculos_setores1_idx` (`setores_id_setor`), ) ENGINE=InnoDB; Como faço para fazer esse select corretamente. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 15, 2015 Veja se isto te ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
xandeb 0 Denunciar post Postado Julho 15, 2015 Valeu, vou dar uma olhada sim!! Compartilhar este post Link para o post Compartilhar em outros sites
xandeb 0 Denunciar post Postado Julho 17, 2015 Ate verifiquei e acho que deu certo se eu fazer apenas com a data mas quando fiz com o horario junto nao deu certo acho que minha logica esta bem errada, alguem pode me ajudar? ("SELECT * FROM veiculos LEFT JOIN regioes ON veiculos.regioes_id_regiao = regioes.id_regiao LEFT JOIN cidades ON veiculos.cidades_id_cidade = cidades.id_cidade LEFT JOIN setores ON veiculos.setores_id_setor = setores.id_setor LEFT JOIN motoristas ON veiculos.motoristas_id_motorista = motoristas.id_motorista LEFT JOIN status_veiculo ON veiculos.status_veiculo_idstatus_veiculo = status_veiculo.idstatus_veiculo LEFT JOIN veiculo_compartilhado ON veiculos.veiculo_compartilhado_idveiculo_compartilhado = veiculo_compartilhado.idveiculo_compartilhado WHERE id_regiao = '$idRegiaoBusca' AND ((id_cidade = '$idCidadeBusca' AND id_setor = '$idSetorBusca' AND idstatus_veiculo = '1') OR (id_cidade = '$idCidadeBusca' AND idstatus_veiculo = '1' AND idveiculo_compartilhado = '1')) AND id_veiculo NOT IN (SELECT veiculos_id_veiculo FROM reservas WHERE status_reserva_idstatus_reserva = 1 AND (datainicial BETWEEN '$datahojei' AND '$datahojef' ) OR (datafinal BETWEEN '$datahojei' AND '$datahojef') OR ('$datahojei' BETWEEN datainicial AND datafinal) OR ('$datahojef' BETWEEN datainicial AND datafinal) AND (horainicial BETWEEN '$horahojei' AND '$horahojef' ) OR (horaaprox BETWEEN '$horahojei' AND '$horahojef') OR ('$horahojei' BETWEEN horainicial AND horaaprox) OR ('$horahojef' BETWEEN horainicial AND horaaprox) ) ORDER by modelo ASC"); Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 17, 2015 Concatene data&hora para testar. Compartilhar este post Link para o post Compartilhar em outros sites
xandeb 0 Denunciar post Postado Julho 20, 2015 Ate tentei mas sou meio fraco nesse ponto, como seria isso se possivel? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 20, 2015 Veja se ajuda. Compartilhar este post Link para o post Compartilhar em outros sites