Olá, estou montando um sist. pra locadoras e tenho uma tabela reservas com data de reserva e data de devolução…
Quero que, quando tento inserir uma reserva, ele não deixe inserir caso houver uma outra reserva que as datas estejam dentro dessa ova…
por ex.:
tenho uma reserva pra dia 10-11-2011 com data de devolução 15-11-2011.
Se eu tentar incluir uma reserva com data de reserva 05-11-2011 e devolução 11-11-2011 ele terá que bloquear…
não sei como fazer isso com um sql… alguem tem uma solução?
antes de vc fazer o insert, vc vai ter que fazer um select, utilizando between como disse JM4X, deve ser algo assim
select * from Reserva where idFilme = ? and 'DATA DE DEVOLUCAO QUE VEIO DO SISTEMA' BETWEEN dataReserva AND dataDevolucao
se esse sql trouxer algum resultado, vc nao deve inserir. vc tbm vai ter que tomar um cuidado, sua dataReserva no seu sistema nao pode ser maior que a dataDevolucao.
t+
mateusviccari
Valeu, ja tinha pensado em usar between só que eu tenho 4 casos em que pode coincidir datas na reserva, pois alem de ter data de locação tambem tenho data de devolução, e o periodo pode ser diferente pro mesmo filme…
Vou ter que resolver meu problema com os metodos AFTER e BEFORE da classe calendar…
E
evefuji
Não precisa complicar tanto, é só usar dois between. (usando o código do jm4x como base, preguiça de digitar)
pmlm
select count(*) from RESERVA
where ID_FILME = :id
and (DATA_INICIO between :data_inicio and :data_fim
or DATA_FIM between :data_inicio and :data_fim
or (DATA_INICIO < :data_inicio and DATA_FIM > :data_fim)
)
Se este count não der 0, então não podes fazer a reserva porque já há uma reserva com datas coincidentes.
pmlm
[quote=evefuji]Não precisa complicar tanto, é só usar dois between. (usando o código do jm4x como base, preguiça de digitar)
Se tiveres uma reserva de 5 a 7 e tentares fazer outra de 4 a 8 não vai detectar que não pode fazer a reserva.
E
evefuji
[quote=pmlm]
evefuji:
Não precisa complicar tanto, é só usar dois between. (usando o código do jm4x como base, preguiça de digitar)
Se tiveres uma reserva de 5 a 7 e tentares fazer outra de 4 a 8 não vai detectar que não pode fazer a reserva.
concordo contigo, mas era só uma ideia para ele começar a pensar a respeito.
mateusviccari
[quote=evefuji]
pmlm:
evefuji:
Não precisa complicar tanto, é só usar dois between. (usando o código do jm4x como base, preguiça de digitar)
Se tiveres uma reserva de 5 a 7 e tentares fazer outra de 4 a 8 não vai detectar que não pode fazer a reserva.
concordo contigo, mas era só uma ideia para ele começar a pensar a respeito.
É exatamente essa era minha duvida, mas valeu, achei melhor fazer uns if else usando os metodos before e after da classe calendar no java, a partir deles consegui englobar todos os casos em que podia dar conflito de reservas.
Obrigado a todos.
pmlm
Vê o SELECT que pus acima. É melhor fazer por SQL do que depois no JAVA
mateusviccari
ops nao tinha visto seu codigo, valeu deu certinho aqui…