Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Obtener Habitaciones disponibles para reservar

Estas en el tema de Obtener Habitaciones disponibles para reservar en el foro de Bases de Datos General en Foros del Web. Hola comunidad! Estoy trabajando en un proyecto de un hotel, y ahora estoy en un problema. Pues necesito obtener las habitaciones que estén disponibles para ...
  #1 (permalink)  
Antiguo 17/03/2015, 08:59
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 13 años, 9 meses
Puntos: 2
Obtener Habitaciones disponibles para reservar

Hola comunidad!

Estoy trabajando en un proyecto de un hotel, y ahora estoy en un problema.
Pues necesito obtener las habitaciones que estén disponibles para un rango de fechas.

Por ejemplo tengo 4 habitaciones en la BD
tengo reservada la habitacion 1 y 2 para las fechas de 20/03/2015 y 23/03/2015, y si yo quiero obtener las habitaciones disponibles para las fechas de 19/03/2015 y 29/03/2015 me tendrian que salir las habitaciones 3 y 4 disponibles.

Llevo horas trabajando, tratando de hacer que el Query me devuelva eso!!
Código SQL:
Ver original
  1. SELECT * FROM HABITACIONES HB
  2. JOIN DETALLERESERVACION DR
  3. ON HB.habid=DR.habid
  4. JOIN RESERVACIONES R
  5. ON DR.resid=R.resid
  6. WHERE '19/03/2015' BETWEEN resfechainicio AND resfechafinal
  7. OR '29/03/2015' BETWEEN resfechainicio AND resfechafinal


Asi tengo mi diagrama de BD


Espero me puedan ayudar.
Gracias
  #2 (permalink)  
Antiguo 18/03/2015, 07:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Obtener Habitaciones disponibles para reservar

un ejemplo de los datos de las tablas ayudaria mejor a entender tu problema.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 18/03/2015, 13:30
Avatar de GemliosG  
Fecha de Ingreso: enero-2015
Ubicación: La Habana
Mensajes: 153
Antigüedad: 9 años, 3 meses
Puntos: 8
Respuesta: Obtener Habitaciones disponibles para reservar

Bro, no me acuerdo muy bien, pero delante del join no iva inner
__________________
GemliosG
  #4 (permalink)  
Antiguo 18/03/2015, 13:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Obtener Habitaciones disponibles para reservar

cual inner???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 19/03/2015, 06:11
Avatar de GemliosG  
Fecha de Ingreso: enero-2015
Ubicación: La Habana
Mensajes: 153
Antigüedad: 9 años, 3 meses
Puntos: 8
Respuesta: Obtener Habitaciones disponibles para reservar

a ver, por lo que me acuerdo y además lo he usado en mi proyecto ultimamente:

Select * FROM Alumno INNER JOIN Escuela ON alumno.id=escuela.id WHERE fech-ini and fech-fin BETWEEN 20/10/2015 and 21/10/2015

A partir del where lo he inventado, no lo he probado, pero si funcionase fuera una pasada, aunque creo que no es el caso, lo que sí se que funciona es el INNER JOIN, o sea todo antes del WHERE
__________________
GemliosG
  #6 (permalink)  
Antiguo 19/03/2015, 06:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Obtener Habitaciones disponibles para reservar

En ese modelo la tabla "detallereservacion" está de más, porque no cumple con funciones.
Una reserva es la relación entre Habitaciones y Clientes, Sólo requeriría una relacion especial entre reserva y cliente si la misma reserva única pudiera ser realizada por N clientes... Lo que no tiene sentido.
La FK del Cliente debe estar en la tabla REserva. El detalle de una reserva sólo tiene sentido para el agregado de servicios, prestaciones y/o registro de acompañantes del cliente.

QUitando eso, la consulta se simplificará.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 19/03/2015, 08:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Obtener Habitaciones disponibles para reservar

Cita:
Iniciado por GemliosG Ver Mensaje
a ver, por lo que me acuerdo y además lo he usado en mi proyecto ultimamente:

Select * FROM Alumno INNER JOIN Escuela ON alumno.id=escuela.id WHERE fech-ini and fech-fin BETWEEN 20/10/2015 and 21/10/2015

A partir del where lo he inventado, no lo he probado, pero si funcionase fuera una pasada, aunque creo que no es el caso, lo que sí se que funciona es el INNER JOIN, o sea todo antes del WHERE
Puede ir tanto inner join, como left join, right join, full outer join, asi como join o hacer el join implicito select * form tabla1,tabla2....asi que el query no esta mal......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 19/03/2015, 08:46
Avatar de GemliosG  
Fecha de Ingreso: enero-2015
Ubicación: La Habana
Mensajes: 153
Antigüedad: 9 años, 3 meses
Puntos: 8
Respuesta: Obtener Habitaciones disponibles para reservar

Ya era solo una duda y ya me la aclaraste muy bien. Es que tengo mis problemas todavía con la programción (me esquematizo) demasiado
__________________
GemliosG

Etiquetas: bd, ejemplo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:24.