Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/07/2014, 06:37
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Select a dos tablas

Cita:
mi consulta debería entregarme los datos de una habitación más todas las fotos que correspondan a esa habitación.
En ese caso no puedes agrupar, y deberás recibir más de un registro para la misma habitación, y resolverlo por programación. El GROUP BY sobre un sólo campo devolverá siempre un único registro por cada valor diferente de ese campo, descartando todos los demás. Adicionalmente sólo devolverá el primero que encuentre, y no los restantes.
Ese no es un error, es el comportamiento normal y esperado de GROUP BY...
Código MySQL:
Ver original
  1.     h.id_habitacion,
  2.     h.nombre,
  3.     h.num_hab,
  4.     h.precio_hab,
  5.     h.caracteristicas,
  6.     IFNULL(i.id_imagen, '') id_imagen,
  7.     IFNULL(i.nombre_imagen, '') nombre_imagen,
  8.     IFNULL(i.ruta, '') ruta
  9. FROM habitacion h LEFT JOIN imagen_habitacion i ON i.num_hab = h.num_hab;

Excepcionalmente, pordrías obtener todos los valores de ids de imagenes, nombres y rutas, en un sólo campo, pero luego deberías, por programación, separar cada uno de esos valores para usarlos. Eso se hace con la función GROUP_CONCAT(), pero eEn definitiva sería tanto trabajo comol recorrer toda la tabla de resultados.
Código MySQL:
Ver original
  1.     h.id_habitacion,
  2.     h.nombre,
  3.     h.num_hab,
  4.     h.precio_hab,
  5.     h.caracteristicas,
  6.     GROUP_CONCAT(i.id_imagen) id_imagen,
  7.     GROUP_CONCAT(i.nombre_imagen) nombre_imagen,
  8.     GROUP_CONCAT(i.ruta) ruta
  9. FROM habitacion h LEFT JOIN imagen_habitacion i ON i.num_hab = h.num_hab;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)