Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/11/2016, 10:03
Avatar de Hyemin
Hyemin
 
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 10 años, 3 meses
Puntos: 0
Problema con consulta SQL con multiples tablas

Buenas,

Tengo que hacer una consulta que regrese los datos de los "huespedes" de un hotel que tengan reservas para una fecha concreta.

En la base de datos de prueba e la tabla reservas hay dos registros que coinciden con esa fecha, uno para el Hotel numero 1 y otro para el numero 6.

El numero 1 la reserva tiene 2 huespedes registrados y en el 6 uno solo

Hoy tengo hecho esto:

Código SQL:
Ver original
  1. USE Hoteles;
  2. SELECT PersonaEmail, PersonaNombre, PersonaApellidoPaterno, idHabitacion
  3. FROM Personas, Habitacion, ReservaHuespedes,  ReservasHabitaciones
  4. WHERE
  5. Personas.PersonaEmail = ReservaHuespedes.ReservaHuespedEmail
  6. AND Habitacion.idHabitacion = ReservasHabitaciones.ReservaHabitacionIdHabitacion
  7. AND Habitacion.idHotel = 1

Si ejecuto laconsulta, el resultado esperado es una tabla asi:

email/ nombre / apellido / habitacion
-------------------------------------------
email1/ usu1 / apellido1 / hab1
email2/ usu2/ apellido2 / hab1

Eso funciona correctamente y obtengo el resultado correcto, el problema me surje cuando quiero agregarle un AND mas quedandome asi:

Código SQL:
Ver original
  1. USE Hoteles;
  2. SELECT PersonaEmail, PersonaNombre, PersonaApellidoPaterno, idHabitacion
  3. FROM Personas, Habitacion, ReservaHuespedes,  ReservasHabitaciones, [B]Reserva[/B]
  4. WHERE
  5. Personas.PersonaEmail = ReservaHuespedes.ReservaHuespedEmail
  6. AND Habitacion.idHabitacion = ReservasHabitaciones.ReservaHabitacionIdHabitacion
  7. AND Habitacion.idHotel = 1
  8. AND Reserva.ReservaFechaEntrada='2010-10-10'

Es en la tabla "Reserva" que se guarda la fecha de entrada, con esa sentencia SQL yo deberia poder obtener el mismo exacto resultado de la tabla anterior sin embargo cuado la ejecuto obtengo el producto cartesiano de la consulta

email/ nombre / apellido / habitacion
-------------------------------------------
email1/ usu1 / apellido1 / hab1
email2/ usu2/ apellido2 / hab1
email1/ usu1 / apellido1 / hab1
email2/ usu2/ apellido2 / hab1

No entiendo que estoy haciendo mal, cualquier ayuda es bienvenida