Array
(
)

Tabela de Preços

Rudá
   - 23 jan 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??


Thomaz_prg
   - 23 jan 2006

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:

#Código


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).


Rudá
   - 23 jan 2006

A tabela fiz assim:

id
valor
horainicial
horafinal
dia
servico

ai coloquei esses registros como exemplo

1 | 1.0 | 12:00:00 | 14:00:00 | 1 | 1
2 | 1.5 | 14:00:01 | 16:00:00 | 1 | 1
3 | 2.0 | 12:00:00 | 14:00:00 | 1 | 2
4 | 2.5 | 14:00:01 | 16:00:00 | 1 | 2
5 | 1.0 | 12:00:00 | 14:00:00 | 2 | 1
6 | 1.5 | 14:00:01 | 16:00:00 | 2 | 1
7 | 2.0 | 12:00:00 | 14:00:00 | 2 | 2
8 | 2.5 | 14:00:01 | 16:00:00 | 2 | 2

Coloquei o seu select assim

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´))

Ai mostrou o id 1

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

Dia | Serviço | HoraInicial | HoraFinal
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??


Thomaz_prg
   - 23 jan 2006

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??


Rudá
   - 23 jan 2006

Mysql