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.