Структура посмотрел. Но она мало, что дала.
Алгоритм слудующий. Для каждого отделения посчитать вместимость. Для каждого отделения посчитать сколько занято. Для каждого отделения посчитать разницу. Итого максимум три запроса, два первых подчиненные. Можно и одним попробовать, но это уже зависит от стурктуры.