เนื่องจากไม่รู้ว่าเก็บข้อมูลยังไง ก็ทำเป็นตัวอย่าง แค่ 4 ชั่วโมง 07:00-07:59, 08:00-08:59 .. 10:00-11:59
rooms = ตารางชื่อห้อง มี field ( id, name )
roomused = ตารางการใช้ห้อง มี field ( id, rm_id, bk) โดย bk เป็น datetime รายชั่วโมง
Code (SQL)
select
rs.id, rs.name,
sum(if(hour(ru.bk)=7,1,0)) as h07,
sum(if(hour(ru.bk)=8,1,0)) as h08,
sum(if(hour(ru.bk)=9,1,0)) as h09,
sum(if(hour(ru.bk)=10,1,0)) as h10,
from rooms rs
left join roomused ru on rs.id=ru.rm_id and date(ru.bk)='2017-08-22'
group by rs.id
h07 - h10 ถ้ามีค่าเป็น 0 เท่ากับว่าง
ปล. php กับ html ลองโมฯ เอาเองนะครับ ดูจาก result ของ query ก็น่าจะไปต่อได้