Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 15-may-2008, 05:01   #1 (permalink)
dante_17 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Ayuda ...Consulta Sql

Hola.
Estoy haciendo una pagina de reservas de hoteles en la que seleccionas hotel, fecha entrada, fecha salida , el numero de habitaciones a reservar y que te muestre las habitaciones disponibles para esas fechas y que no muestre las habitaciones ocupadas.

Alguien sabe como hacerlo?

Mis tablas:

->Hoteles

IDHotel#Nombre#estrellas

->habitaciones
NumeroHabitacion#IDHotel#TipoDeHabitacion

->HabitacionesReservadas
NumeroHabitacion#IDHotel#NumeroDeReserva

->Reservas
NumeroDeReserva#Fechaentrada#FechaSalida

Tengo esta consulta que encontre en este foro pero me muestra las habitaciones que ya tengo reservadas.

Hotel--->101
Fechaentrada: 2008-05-05
Fecha salida: 2008-05-22

SELECT habitaciones.NumeroHabitacion FROM habitaciones WHERE habitaciones.NumeroHabitacion Not In
(SELECT DISTINCT habitacionesreservadas.NumeroHabitacion FROM reservas, habitacionesreservadas
WHERE (reservas.FechaEntr<='2008-05-05'AND reservas.FechaSal>'2008-05-22')
OR (reservas.FechaEntr<='2008-05-22'AND reservas.FechaSal>'2008-05-22')
OR (reservas.FechaEntr>'2008-05-05'AND reservas.FechaSal<'2008-05-22') AND habitacionesreservadas.NumReserva=reservas.NumRese rva)
AND IDHotel='101';

URGENTE.......

GRACIAS.

Última edición por dante_17; 15-may-2008 a las 07:08.
dante_17 está desconectado   Responder Citando
Antiguo 15-may-2008, 09:08   #2 (permalink)
quimfv tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 398
Re: Ayuda ...Consulta Sql

Mira si te sirve....

calcular fechas ocupadas entre 2 fechas

no ireis a la misma clase...

Quim
quimfv esta en línea ahora   Responder Citando
Antiguo 15-may-2008, 10:32   #3 (permalink)
dante_17 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Re: Ayuda ...Consulta Sql

Hola.

Gracias por responder pero ya he visto este tema y es el que he utilizado para el select pero no me funciona.
dante_17 está desconectado   Responder Citando
Antiguo 15-may-2008, 10:59   #4 (permalink)
jurena tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 509
Re: Ayuda ...Consulta Sql

Esto debe mostrarte las no reservadas para esas fechas:

SELECT habitacion FROM reserva WHERE habitacion NOT IN (SELECT habitacion from reserva where ('2008-05-01' <= fechadesde AND '2008-05-06' >= fechadesde) OR ('2008-05-01' >= fechadesde AND '2008-05-01' <= fechahasta))

y eso, creo, funciona para 2008-05-01 fecha de entrada propuesta y 2008-05-06 fecha de salida.
Por lo demás, creo que es lo que te habías traído. Tendrás que adaptar la consulta a tu tabla y relaciones.
jurena está desconectado   Responder Citando
Antiguo 15-may-2008, 12:57   #5 (permalink)
quimfv tiene algunos puntos positivos de karma
 
Fecha de Ingreso: marzo-2008
Mensajes: 398
Re: Ayuda ...Consulta Sql

Cita:
SELECT habitaciones.NumeroHabitacion FROM habitaciones WHERE habitaciones.NumeroHabitacion Not In
(SELECT DISTINCT habitacionesreservadas.NumeroHabitacion FROM reservas, habitacionesreservadas
WHERE (reservas.FechaEntr<='2008-05-05'AND reservas.FechaSal>'2008-05-22')
OR (reservas.FechaEntr<='2008-05-22'AND reservas.FechaSal>'2008-05-22')
OR (reservas.FechaEntr>'2008-05-05'AND reservas.FechaSal<'2008-05-22') AND habitacionesreservadas.NumReserva=reservas.NumRese rva)
AND IDHotel='101';
No, no....

Cita:
SELECT habitaciones.NumeroHabitacion FROM habitaciones WHERE habitaciones.NumeroHabitacion Not In
(SELECT DISTINCT habitacionesreservadas.NumeroHabitacion FROM reservas inner join habitacionesreservadas
on habitacionesreservadas.NumReserva=reservas.NumRese rva
WHERE ((reservas.FechaEntr<='2008-05-05'AND reservas.FechaSal>'2008-05-22')
OR (reservas.FechaEntr<='2008-05-22'AND reservas.FechaSal>'2008-05-22')
OR (reservas.FechaEntr>'2008-05-05'AND reservas.FechaSal<'2008-05-22'))
AND HabitacionesReservadas.IDHotel='101';
Intenta esto.

Quim
quimfv esta en línea ahora   Responder Citando
Antiguo 16-may-2008, 14:54   #6 (permalink)
dante_17 ha deshabilitado el karma
 
Fecha de Ingreso: abril-2008
Mensajes: 12
Respuesta: Ayuda ...Consulta Sql

Con esta consulta no funcionaria igual :

SELECT hoteles.Nombre, NumeroHabitacion FROM hoteles inner join habitaciones ON hoteles.IDHotel=habitaciones.IDHotel
WHERE habitaciones.NumeroHabitacion Not In
(SELECT NumeroHabitacion FROM reservas inner join habitacionesreservadas
on habitacionesreservadas.NumReserva=reservas.NumRese rva
WHERE reservas.FechaEntr>='2008-05-05'AND reservas.FechaSal<='2008-05-22')

Porque me mostrara las habitaciones que no esten en ese intervalo de fecha
dante_17 está desconectado   Responder Citando
Antiguo 17-may-2008, 17:23   #7 (permalink)
gnzsoloyo está en el buen camino
 
Avatar de gnzsoloyo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 587
Respuesta: Ayuda ...Consulta Sql

Podríamos probar algo así:
Código:
SELECT H.Nombre HA.NumeroHabitacion, HA.TipoHabitación
FROM HOTELES H INNER JOIN HABITACIONES HA USING (IDHOTEL)
INNER JOIN HABITACIONESRESERVADAS HR USING(NUMEROHABITACION, IDHOTEL)
INNER JOIN RESERVAS R USING (NUMERODERESERVA)
WHERE (@FechaEntrada NOT BETWEEN R.FechaEntrada AND R.FechaSalida) 
AND (@FechaSalida NOT BETWEEN R.FechaEntrada AND R.FechaSalida);
Entendiendo que los valores @FechaEntrada y @FechaSalida son valores ingresados dentro de variables, y por lo tanto se deben incorporar en la llamada a la sentencia, según sea el lenguaje que estés usando.

Existiría otro método a mi juicio, bastante eficiente, pero que requiere el uso de Store Procedures.
__________________
¿Quién de sus aciertos aprende?, si yo aprendo de mis errores constantemente...
gnzsoloyo está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 01:34.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93