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

Consulta a 2 tablas

Estas en el tema de Consulta a 2 tablas en el foro de Mysql en Foros del Web. Hola comunidad antes que todo agradecer cualquier ayuda o sugerencia. Bueno les comento tengo 2 tablas una llamada reservas y otra horarios, el tema que ...
  #1 (permalink)  
Antiguo 14/05/2013, 12:57
 
Fecha de Ingreso: marzo-2011
Mensajes: 18
Antigüedad: 13 años, 1 mes
Puntos: 0
Consulta a 2 tablas

Hola comunidad antes que todo agradecer cualquier ayuda o sugerencia.

Bueno les comento tengo 2 tablas una llamada reservas y otra horarios, el tema que necesito sacar todas las horas reservadas de X instalacion en una fecha X, esto lo hago de este forma:

Código:
SELECT r.id_reserva_r, r.fecha_a_reservar_r, r.tipo_insta_r,r.fk_instalacion_r,h.hora
FROM reservas AS r, horarios AS h
WHERE  r.fecha_a_reservar_r='2013-05-18'
AND r.fk_instalacion_r=1
AND r.fk_instalacion_r=h.id_i
GROUP BY h.hora
Y me arroja este resultado.
Código:
id_reserva_r  fecha_a_reservar_r  tipo_insta_r  fk_instalacion_r    hora  
------------  ------------------  ------------  ----------------  --------
           1  2013-05-18          canchas                      1         1
           1  2013-05-18          canchas                      1         2
           1  2013-05-18          canchas                      1         4
Y es aqui donde esta mi problema la columna del id_reserva_r se repite con el dato los 1 asi abajo y deberia aparecer algo asi:
id_reserva_r
Código:
------------  
           1  
           3  
           2
Nose como puedo hacer para que me aparescan esos valores en esa columna intente con el distinct pero nada.... bueno gracias desde ya.

Saludos
  #2 (permalink)  
Antiguo 14/05/2013, 13:25
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta a 2 tablas

Hola pyrata:

Vayamos por partes... en primer lugar, debes comenzar por decirnos cuál es la estructura de tus tablas y poner algunos datos de ejemplo, para poder determinar donde está el problema, aunque a simple vista no veo en realidad ningún problema.

Comencemos por definir la cardinalidad entre tus tablas, desde mi punto de vista tus datos son así: una fecha a reservar puede tener reservadas N horas, por lo tanto, el dato que las reservas PUEDE REPETIRSE N VECES. Es por eso que te pido datos de ejemplo y que a partir de esos datos nos digas qué es lo que estás esperando como salida.

Por otro lado, no es conveniente que unas tus tablas con el FROM-WHERE, en lugar de eso utilizas JOIN's, además de que las consultas quedan más "limpias", te brinda la posibilidad de separar las condiciones de filtrado de las condiciones de unión...

Código MySQL:
Ver original
  1.   r.id_reserva_r, r.fecha_a_reservar_r, r.tipo_insta_r,r.fk_instalacion_r,h.hora
  2. FROM reservas r INNER JOIN horarios h ON r.fk_instalacion_r=h.id_i
  3.   r.fecha_a_reservar_r='2013-05-18' AND r.fk_instalacion_r=1
  4. GROUP BY h.hora

La palabra reservada AS es COMPLETAMENTE INUTIL.

Finalmente, no entiendo por que haces una agrupación por HORA, si a final de cuentas NO UTILIZAS NINGUNA FUNCIÓN DE AGRUPACIÓN (COUNT, MIN, MAX, AVG......) para entenderlo deberías tratar de explicar un poco mejor la lógica de tu consulta.

Saludos
Leo.

Etiquetas: select, tabla, tablas
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 09:57.