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 r.id_reserva_r, r.fecha_a_reservar_r, r.tipo_insta_r,r.fk_instalacion_r,h.hora
r.fecha_a_reservar_r
='2013-05-18' AND r.fk_instalacion_r
=1
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.