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

Necesito me ayuden con una consulta usando JOIN y NOT IN

Estas en el tema de Necesito me ayuden con una consulta usando JOIN y NOT IN en el foro de Mysql en Foros del Web. Buenas a todos, estoy necesitando una mano. Necesito consultar 3 tablas llamadas complejos canchas y reservas, las primeras dos es con el fin de unir ...
  #1 (permalink)  
Antiguo 06/10/2012, 18:18
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Necesito me ayuden con una consulta usando JOIN y NOT IN

Buenas a todos, estoy necesitando una mano. Necesito consultar 3 tablas llamadas complejos canchas y reservas, las primeras dos es con el fin de unir los datos al momento de listarlos con la condición de que coincida una variable llamada barrio, y la tercera necesito chequear que los resultados anteriores no exista un registro para X fecha y X hora si existe no listar en los resultados de la consulta.
Intento realizar esto en una sola consulta usando JOIN y NOT IN, pero en realidad la consulta la devuelve vacía; bueno no se si lo que estoy haciendo es correcto, les dejo mi consulta y espero alguien pueda orientarme. Desde ya Gracias !!!

SELECT complejos.id_complejo, complejos.nomb_complejo, complejos.ub_barrio, complejos.ub_direccion, canchas.id_cancha, canchas.denominacion_cancha, canchas.tipo_cancha, canchas.costo_cancha, canchas.comodidades_techado, canchas.comodidades_luz_artificial, canchas.comodidades_vesturarios, canchas.comodidades_duchas, canchas.comodidades_agua_caliente, canchas.comodidades_parrillero, canchas.comodidades_garage, canchas.comodidades_otras FROM complejos JOIN (canchas) ON (complejos.id_complejo = canchas.id_complejo) WHERE complejos.ub_barrio = 'Palermo' AND NOT IN (SELECT canchas.id_cancha FROM reservas WHERE canchas.id_cancha = reservas.id_cancha reservas.fecha_reserva != '2012-10-05' or reservas.hora_reserva != '16:00') ORDER BY RAND() LIMIT 5
  #2 (permalink)  
Antiguo 06/10/2012, 18:36
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Necesito me ayuden con una consulta usando JOIN y NOT IN

Estimados, copie la consulta con unos errores, aquí les dejo la consulta que estoy usando copiada correctamente, les recuerdo que esta consulta se ejecuta y devuelve un valor vacío.

SELECT complejos.id_complejo, complejos.nomb_complejo, complejos.ub_barrio, complejos.ub_direccion, canchas.id_cancha, canchas.denominacion_cancha, canchas.tipo_cancha, canchas.costo_cancha, canchas.comodidades_techado, canchas.comodidades_luz_artificial, canchas.comodidades_vesturarios, canchas.comodidades_duchas, canchas.comodidades_agua_caliente, canchas.comodidades_parrillero, canchas.comodidades_garage, canchas.comodidades_otras FROM complejos JOIN (canchas) ON (complejos.id_complejo = canchas.id_complejo) WHERE complejos.ub_barrio = 'Palermo' NOT IN (SELECT canchas.id_cancha FROM reservas WHERE reservas.fecha_reserva != '2012-10-05' or reservas.hora_reserva != '16:00') ORDER BY RAND() LIMIT 5
  #3 (permalink)  
Antiguo 06/10/2012, 20:43
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: Necesito me ayuden con una consulta usando JOIN y NOT IN

Esto está decididamente mal:
Código SQL:
Ver original
  1. WHERE complejos.ub_barrio = 'Palermo' NOT IN (SELECT

El NOT IN es una comparación entre una columna y una lista de valores, en este caso producto de una subconsulta. Y no lo estás haciendo, porque la columna ub_barrio la estás comparando contra una constante. Por ende el NOT IN no está siendo comparado contra nada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 06/10/2012 a las 21:27
  #4 (permalink)  
Antiguo 06/10/2012, 21:41
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Necesito me ayuden con una consulta usando JOIN y NOT IN

gnzsoloyo, en primer lugar gracias por responder !

No estoy seguro de comprender tu respuesta, así que te pido me orientes un poco mas; tu me dices que debo comparar entre una columna y una lista de valores, si lo que yo necesito es consultar las tablas complejos y canchas para listar las que se encuentran en el barrio del usuario y luego consultar la tabla reservas para no mostrar aquella que este reservada para ese día y hora, entonces NOT IN no es la opción?
  #5 (permalink)  
Antiguo 06/10/2012, 22:28
 
Fecha de Ingreso: octubre-2012
Mensajes: 4
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Necesito me ayuden con una consulta usando JOIN y NOT IN

Solucionado, dejo la consulta por si alguien tiene el mismo problema y le es de utilidad

SELECT complejos.id_complejo, complejos.nomb_complejo, complejos.ub_barrio, complejos.ub_direccion, canchas.id_cancha,
canchas.denominacion_cancha, canchas.tipo_cancha, canchas.costo_cancha, canchas.comodidades_techado, canchas.comodidades_luz_artificial, canchas.comodidades_vesturarios, canchas.comodidades_duchas, canchas.comodidades_agua_caliente, canchas.comodidades_parrillero,
canchas.comodidades_garage, canchas.comodidades_otras FROM complejos JOIN (canchas) ON (complejos.id_complejo = canchas.id_complejo)
WHERE complejos.ub_barrio = 'Palermo' and canchas.id_cancha NOT IN (SELECT reservas.id_cancha FROM reservas WHERE reservas.fecha_reserva = '2012-10-05' and reservas.hora_reserva = '16:00') ORDER BY RAND() LIMIT 5

Etiquetas: join, select, tabla, tipo, usando
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 17:03.