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 h.id_habitacion,
h.nombre,
h.num_hab,
h.precio_hab,
h.caracteristicas,
IFNULL(i.id_imagen
, '') id_imagen
, IFNULL(i.nombre_imagen
, '') nombre_imagen
, 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 h.id_habitacion,
h.nombre,
h.num_hab,
h.precio_hab,
h.caracteristicas,
FROM habitacion h
LEFT JOIN imagen_habitacion i
ON i.num_hab
= h.num_hab
;