Problema con consulta de actualización

10/04/2008 - 12:54 por Hugo Gsell | Informe spam
Tengo 2 tablas Turnos y Feriados.
Resumiendo y tomando lo que nos interesa...
Turnos tiene un campo FechaHoraTurno (var tipo datetime) y un campo estado
(int).
Feriados tiene un campo FechaHoraFeriadoDesde y FechaHoraFeriadoHasta.
Conceptualmente tengo en la tabla Turnos todos los días de un periodo en el
que tengo turnos a asignar y en la tabla Feriados los días y rango de
horarios 'que si es feriado no se atiende'.
Necesito realizar una consulta que resuelva lo siguiente:
poner el campo ESTADO de la tabla Turnos con valor 2 si la FechaHoraTurno de
esta turno se halla comprendido entre algun registro de
FechaHoraFeriadoDesde y FechaHoraFeriadoHasta. En cualquier otro caso poner
valor 1.
Ejemplo
TABLA Turnos
FechaHoraTurno Estado
01/04/2008 10:00 0
01/04/2008 11:00 0
01/04/2008 15:00 0

TABLA Feriado
FechaHoraFeriadoDesde | FechaHoraFeriadoHasta.
01/04/2008 12:00 01/04/2008 21:00
15/05/2008 15:00 15/05/2008 21:00
02/08/2008 12:00 02/08/2008 21:00

La tabla Turnos quedaría:
TABLA Turnos
FechaHoraTurno Estado
01/04/2008 10:00 1
01/04/2008 11:00 1
01/04/2008 15:00 2 ESTE ES EL REGISTRO QUE SE HALLA COMPRENDIDO EN UN
Registro fecha/hora de feriado
...

Espero que se haya entendido.
Espero puedan ayudarme.

Hugo A. Gsell

Preguntas similare

Leer las respuestas

#1 Alfredo Novoa
10/04/2008 - 13:23 | Informe spam
Hola Hugo,

On Thu, 10 Apr 2008 07:54:48 -0300, "Hugo Gsell"
wrote:

Tengo 2 tablas Turnos y Feriados.
Resumiendo y tomando lo que nos interesa...
Turnos tiene un campo FechaHoraTurno (var tipo datetime) y un campo estado
(int).
Feriados tiene un campo FechaHoraFeriadoDesde y FechaHoraFeriadoHasta.
Conceptualmente tengo en la tabla Turnos todos los días de un periodo en el
que tengo turnos a asignar y en la tabla Feriados los días y rango de
horarios 'que si es feriado no se atiende'.
Necesito realizar una consulta que resuelva lo siguiente:
poner el campo ESTADO de la tabla Turnos con valor 2 si la FechaHoraTurno de
esta turno se halla comprendido entre algun registro de
FechaHoraFeriadoDesde y FechaHoraFeriadoHasta. En cualquier otro caso poner
valor 1.



¿Y por que no lo haces tu mismo?

¿Con que problemas te has encontrado?


Saludos
Alfredo
Respuesta Responder a este mensaje
#2 Hugo Gsell
10/04/2008 - 16:07 | Informe spam
es que no estoy entendiendo como hacerlo.

"Alfredo Novoa" escribió en el mensaje
news:

Hola Hugo,

On Thu, 10 Apr 2008 07:54:48 -0300, "Hugo Gsell"
wrote:

Tengo 2 tablas Turnos y Feriados.
Resumiendo y tomando lo que nos interesa...
Turnos tiene un campo FechaHoraTurno (var tipo datetime) y un campo estado
(int).
Feriados tiene un campo FechaHoraFeriadoDesde y FechaHoraFeriadoHasta.
Conceptualmente tengo en la tabla Turnos todos los días de un periodo en
el
que tengo turnos a asignar y en la tabla Feriados los días y rango de
horarios 'que si es feriado no se atiende'.
Necesito realizar una consulta que resuelva lo siguiente:
poner el campo ESTADO de la tabla Turnos con valor 2 si la FechaHoraTurno
de
esta turno se halla comprendido entre algun registro de
FechaHoraFeriadoDesde y FechaHoraFeriadoHasta. En cualquier otro caso
poner
valor 1.



¿Y por que no lo haces tu mismo?

¿Con que problemas te has encontrado?


Saludos
Alfredo
Respuesta Responder a este mensaje
#3 Carlos M. Calvelo
10/04/2008 - 16:37 | Informe spam
On 10 apr, 16:07, "Hugo Gsell" wrote:
es que no estoy entendiendo como hacerlo.




Es muy sencillo Hugo.

update turnos
set estado case when exists(select * from feriado
where fechahoraturno between fechahoraferiadodesde
and fechahoraferiadohasta)
then 2
else 1
end

Saludos,
Carlos
Respuesta Responder a este mensaje
#4 Hugo Gsell
30/04/2008 - 17:56 | Informe spam
Gracias

Hugo


"Carlos M. Calvelo" escribió en el mensaje
news:
On 10 apr, 16:07, "Hugo Gsell" wrote:
es que no estoy entendiendo como hacerlo.




Es muy sencillo Hugo.

update turnos
set estado > case when exists(select * from feriado
where fechahoraturno between fechahoraferiadodesde
and fechahoraferiadohasta)
then 2
else 1
end

Saludos,
Carlos
Respuesta Responder a este mensaje
#5 Carlos M. Calvelo
30/04/2008 - 18:09 | Informe spam
Hola Hugo,

On 30 apr, 17:56, "Hugo Gsell" wrote:
Gracias




De nada. Pues ya hace tiempo!
Tu acabas de volver de unas vacaciones? :)

Reacciono para añadir que con la solución que te dí tienes
redundancia. Cada vez que cambie algo en la tabla feriado
tendrás que hacer un UPDATE en la tabla turnos.

Quizás sea mejor olvidarse de la columna estado en la
tabla turnos y calcularla siempre, con la misma expresión.

Asi:

select
FechaHoraTurno,
case
when exists(select * from feriado
where fechahoraturno between fechahoraferiadodesde
and fechahoraferiadohasta)
then 2
else 1
end as estado
from turnos

Esta consulta tambien la puedes meter en una vista y entonces
puedes hacer algo como

select * from TurnosConEstado
(donde TurnosConEstado es el nombre de tu vista)

Espero no te haya confundido mas.

Saludos,
Carlos
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida