Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-02-2005
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
CHiCoLiTa Va por buen camino
Problema de logica haciendo comparaciones en SQL

Hola
No sabia muy bien si tenia que meter este hilo aqui o no, pero como al fin y al cabo es SQL pues probemos

Tengo una consulta que despues de pegarme con ella un rato no consigo sacarla adelante y como 4 ojos ven mas que 2...

Es el tipico programa de reserva de aulas y lo que quiero es que la query en cuestion me devuelva cuales estan ocupadas para no permitir reservarlas

Tengo 2 campos de tipo datetime (por cierto, estoy con SQL Server) y ahi es donde comparo las horas para saber si esta reservada o no

He probado tantas que no se si esta es la buena o no.
El problema que observo siempre es que si intento reservar un rango mas grande al que existe no me devuelve nada, por ejemplo si tengo reservado de 10 a 11, me permite reservar de 09 a 12 y hay existe una hora en la quye ya esta ocupada

No se si he conseguido explicarme bien, espero que si

Código SQL [-]
select ID_AU
from RESERVAS 

where FECHA = '22/02/05' and 
(

  ('09:00:00' >= convert(varchar, HORA_DESDE, 108) and '09:00:00' <= convert(varchar, HORA_HASTA, 108)) 

or

  ('19:00:00' >= convert(varchar, HORA_DESDE, 108) and '19:00:00' <= convert(varchar, HORA_HASTA, 108))
)

Evidentemente la fecha y las horas las mando por paramertros, lo he dejado asi para que no queden dudas

Gracias por haber leido el rollo que he contado
Responder Con Cita
  #2  
Antiguo 24-02-2005
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Cita:
Empezado por CHiCoLiTa
Es el tipico programa de reserva de aulas y lo que quiero es que la query en cuestion me devuelva cuales estan ocupadas para no permitir reservarlas

Tengo 2 campos de tipo datetime (por cierto, estoy con SQL Server) y ahi es donde comparo las horas para saber si esta reservada o no

He probado tantas que no se si esta es la buena o no.
El problema que observo siempre es que si intento reservar un rango mas grande al que existe no me devuelve nada, por ejemplo si tengo reservado de 10 a 11, me permite reservar de 09 a 12 y hay existe una hora en la quye ya esta ocupada

No se si he conseguido explicarme bien, espero que si

Código SQL [-]
 select ID_AU
 from RESERVAS 
 where FECHA = '22/02/05' and (
     ('09:00:00' >= convert(varchar, HORA_DESDE, 108) and '09:00:00' <= convert(varchar, HORA_HASTA, 108)) 
 or    ('19:00:00' >= convert(varchar, HORA_DESDE, 108) and '19:00:00' <= convert(varchar, HORA_HASTA, 108)))

Evidentemente la fecha y las horas las mando por paramertros, lo he dejado asi para que no queden dudas

Gracias por haber leido el rollo que he contado
bueno creo que primero debe definir bien las cosas, si quieres las aulas que estan ocupadas, simplemente que te retorne la id de las que tienen valor en la hora y claro la hora

mas o menos asi,


Código SQL [-]
  select ID_AU, horadesde, horahasta
  from RESERVAS 
  
  where FECHA = variablefecha and horadesde is not null

con esto te retornara la idaula y las horas en la que esta reservada
claro para esto tu tabla debe tener la idaula y los dos campos de hora
Responder Con Cita
  #3  
Antiguo 25-02-2005
Avatar de jas010
jas010 jas010 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Bolivia
Posts: 51
Poder: 20
jas010 Va por buen camino
Lightbulb posible solucion

apoyo lo que dice el_enigma1 otra forma de solucionas seria crear una columna en la cual te diga el estado de aula osea si esta ocuapada o esta libre
espero que la aclaracion te sirva
Responder Con Cita
  #4  
Antiguo 01-03-2005
CHiCoLiTa CHiCoLiTa is offline
Miembro
 
Registrado: may 2003
Posts: 102
Poder: 21
CHiCoLiTa Va por buen camino
Cita:
Empezado por el_enigma1
bueno creo que primero debe definir bien las cosas, si quieres las aulas que estan ocupadas, simplemente que te retorne la id de las que tienen valor en la hora y claro la hora

mas o menos asi,


Código SQL [-]
  select ID_AU, horadesde, horahasta
  from RESERVAS 
  
  where FECHA = variablefecha and horadesde is not null

con esto te retornara la idaula y las horas en la que esta reservada
claro para esto tu tabla debe tener la idaula y los dos campos de hora
Eso no resuelve el problema. Ademas, recuerda que la solucion la tiene que devolver directamente el SQL, no que me de un listado y compararlo con lo que tengo por programacion
Responder Con Cita
  #5  
Antiguo 04-03-2005
el_enigma1 el_enigma1 is offline
Miembro
 
Registrado: may 2004
Posts: 57
Poder: 20
el_enigma1 Va por buen camino
Cita:
Empezado por CHiCoLiTa
Eso no resuelve el problema. Ademas, recuerda que la solucion la tiene que devolver directamente el SQL, no que me de un listado y compararlo con lo que tengo por programacion
creo que se te olvido

Es el tipico programa de reserva de aulas y lo que quiero es que la query en cuestion me devuelva cuales estan ocupadas para no permitir reservarlas

lo que yo escribi te devuelde las que estan ocupadas, y si eso no es lo que quieres, pues lastima que no sepas pedir las cosas correctamente, pero principalmente de buen modo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:10:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi