ciao
credo che tu debba fare tutto in 2 query: la prima raccoglie l'elenco delle sale e la seconda raccoglie le prenotazioni.
ti crei un ciclo sulle sale e fai la comparazione sulle righe di prenotazione.
prima di ciò però ti crei un ciclo fisso della giornata dalle 8.00 alle 20.00 ipotesi e poii raccogli in array ordinati tutte le corrispondenze.
il creare la tabella dopo sarà un attimo
credo che sia la soluzione più fattibile e meno dolorosa, piuttosto che ottimizzare una query per avere queste informazioni, anche se a mio parere già la tabella delle prenotazione ti da tutte le informazioni necessarie.