Tabela de Preços

23/01/2006

Preciso fazer uma tabela de preços. ex:

Segunda feira das 12:00:00 até 14:00:00 com o serviço Intenet o Preço é 2,00 a hora
---------------------------------------------------------------------------------------------------
Segunda feira das 12:00:00 até 14:00:00 com o serviço Trabalho o preço é 1,00 a hora
---------------------------------------------------------------------------------------------------
Segunda feira das 12:00:00 até 14:00:00 com o serviço Música o preço é 2,00 a hora
---------------------------------------------------------------------------------------------------

E assim vai...

Eu não estou sabendo como fazer isso, como ficaria a tabela, como vou verificar se já existe na hora de inserir aquela hora do dia do servico com aquele preco.

entende??

É como uma tabela de um sistema de lan house.

Alguem pode me ajudar??


Rudá

Respostas

23/01/2006

Thomaz_prg

Sua dúvida é quanto a construção da tabela ou da implementação?

Da tabela:

ID ------> Chave Primária
HORA_INI
HORA_FIM
ID_SERVICO
VALOR

Para verificar a existência, você teria que fazer o seguinte:

select * from tabela where id_servico = :id_servico and 
(
(hora_ini <= :hora_ini and hora_fim >= :hora_ini) or
(hora_ini <= :hora_fim and hora_fim >= :hora_fim)
)


Isso verificaria se já existe preco lançado nesse intervalo de tempo. Se existir, será retornado o registro, então, você decide, se pode ou não inserir (mesmo havendo choque de horários para um mesmo serviço).


Responder Citar

23/01/2006

Rudá

A tabela fiz assim:

id
valor
horainicial
horafinal
dia
servico

ai coloquei esses registros como exemplo

[b:c694163d3f]1[/b:c694163d3f] | 1.0 | 12:00:00 | 14:00:00 | 1 | 1
[b:c694163d3f]2[/b:c694163d3f] | 1.5 | 14:00:01 | 16:00:00 | 1 | 1
[b:c694163d3f]3[/b:c694163d3f] | 2.0 | 12:00:00 | 14:00:00 | 1 | 2
[b:c694163d3f]4[/b:c694163d3f] | 2.5 | 14:00:01 | 16:00:00 | 1 | 2
[b:c694163d3f]5[/b:c694163d3f] | 1.0 | 12:00:00 | 14:00:00 | 2 | 1
[b:c694163d3f]6[/b:c694163d3f] | 1.5 | 14:00:01 | 16:00:00 | 2 | 1
[b:c694163d3f]7[/b:c694163d3f] | 2.0 | 12:00:00 | 14:00:00 | 2 | 2
[b:c694163d3f]8[/b:c694163d3f] | 2.5 | 14:00:01 | 16:00:00 | 2 | 2

Coloquei o seu select assim

[b:c694163d3f]SELECT * FROM precos WHERE servico=1 and dia=1 and
((horainicial <= ´13:00:00´ and horafinal >= ´13:00:00´) or (horainicial <= ´14:00:00´ and horafinal >= ´14:00:00´))[/b:c694163d3f]

Ai mostrou o id [b:c694163d3f]1[/b:c694163d3f]

Deu certo o select, muito obrigado pela ajuda.

Agora queria saber como faço para saber as horas que estão disponíveis no dia.

Ainda usando os registros acima, ele teria que ser mostrado assim

[b:c694163d3f]Dia | Serviço | HoraInicial | HoraFinal[/b:c694163d3f]
1 | 1 | 00:00:00 | 11:59:59
1 | 1 | 16:00:01 | 11:59:59
1 | 2 | 00:00:00 | 11:59:59
1 | 2 | 16:00:01 | 11:59:59
2 | 1 | 00:00:00 | 11:59:59
2 | 1 | 16:00:01 | 11:59:59
2 | 2 | 00:00:00 | 11:59:59
2 | 2 | 16:00:01 | 11:59:59

Entendeu o que quiz dizer ai com as horas livres??


Responder Citar

23/01/2006

Thomaz_prg

Entendi. O problema é que apenas com um comando SQL creio não ser possível. Porém com uma SP é sim. Qual o banco está usando??


Responder Citar

23/01/2006

Rudá

[b:5499258f95]Mysql[/b:5499258f95]


Responder Citar