Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Qual a melhor forma de montar um banco de dados para um softaware aonde eu devo realizar o agendamento de viagens de onibus. Aonde cada registro tem a data da partida e data de chegada por exemplo DATA DE PARTIDA DIA 10 E DATA DE CHEGADA DIA 15, porem na hora de realizar a pesquisa por uma viagem pelo DIA 11 deve aparecer que ha uma viagem acontecendo nesta data.
TABELAS EXISTENTES
#VIAGEM = registro de tds os dados da VIAGEM
#MOTORISTA = motorista ligado a VIAGEM
#CLIENTE = cliente ligado a VIAGEM
#VEICULO = veiculo ligado a VIAGEM
#CIDADE = cidade de ida e volta ligado a VIAGEM
#USUARIO = usuario que realizou o registro da VIAGEM
Então como eu posso resolver esse problema das datas de viagens que o onibus ficara fora?
A duvida seria de como realizar a pesquisa de uma data sendo que ela não esta cadastrada, por exemplo que foi dado ali em cima, em um registro de viagem tem cadastrado a data de partida 01/01/2017 e data de chegada 05/01/2017, mas depois se eu realizar a busca pela data 03/01/2017, esse registro deve aparecer.
algo como :
select *
from VIAGEM
where '03/01/2017' between data_inicio and data_fim
veja também
http://forum.imasters.com.br/topic/528665-reserva-de-data-e-hora/
O BETWEEN funcionaria muito bem mas no meu caso eu acho que não da certo, porque para realizar a minha busca eu coloco no campo de pesquisa apenas uma data que buscaria em todo o banco de dados. No caso do BETWEEN eu precisaria ter uma data inicial e outro final para realizar esta consulta sql.
Como eu poderia resolver? Será que eu tenho que realizar a pesquisa de todas as datas do ano para isso?
Não entendi , faça um exemplo com alguns dados.
Basicamente é o BETWEEN com uma data de parametro para pesquisa.
Na tabela viagem contem os campos de data inicial e final norlmalmente, mas na hora que o usuario realizar a pesquisa ele não vai colocar uma data inicial e outra data final para realizar a busca, ele apenas ira colocar uma Data e com essa data sera verificado em todos os registros de viagens se essa data esta livre. Mas não esquecendo de checar as datas entre data inicial e final.
Utilizando o método de BETWEEN, as buscas agora estão dando resultado mas quando eu busco por exemplo pela data '05/01/2016', vem como resultado três viagens de anos diferentes mas com o mesmo dia.
EX: Resultado da busca pela data '05/01/2016' que é uma data final.
REGISTRO DATA '01/01/2016
REGISTRO DATA '01/01/2017
REGISTRO DATA '01/01/2018
A busca esta certa, mas aparece dois registros a mais de anos diferentes.
/applications/core/interface/imageproxy/imageproxy.php?img=https://uploaddeimagens.com.br/images/000/647/871/full/Untitled-2.jpg?1466741831&key=ab9be2639ed15879732c187a3e27c715406efa786932d9957873b288f4fa34bb" alt="Untitled-2.jpg?1466741831" />
Acho que eu consegui resolve esse último problema, eu especifiquei o ANO e MÊS em que esta sendo realizado a busca, então ele não mostrará outros registros de anos ou meses diferentes que tenham o mesmo dia.
/applications/core/interface/imageproxy/imageproxy.php?img=https://uploaddeimagens.com.br/images/000/647/878/full/Untitled-3.jpg?1466744261&key=6386d4337d6b6a3adae6ce3c90397f6d6c9fdaabdb539918d47ec51539330f77" alt="Untitled-3.jpg?1466744261" />
A dúvida é sobre modelagem ou sobre como obter um intervalo.
Para intervalos busque por BETWEEN.