Newer
Older
WITH
mitarbeiter_in_raum AS (SELECT DISTINCT * FROM dep1_mitarbeiter INNER JOIN Rolle_Sollflaeche ON Rolle_Sollflaeche.Raum_Rolle = dep1_mitarbeiter.Rolle WHERE Sektion = :Sektion AND Rolle != 'Account-Gast'),
raum_flaechen AS (SELECT mitarbeiter_in_raum.Haus, Raum, SUM(Flaechensollwert) AS 'Genutzte_Flaeche', Raeume_Haeuser.Flaeche, (SELECT Raeume_Haeuser.Flaeche - SUM(Flaechensollwert)) AS 'freie_flaeche' FROM mitarbeiter_in_raum INNER JOIN Raeume_Haeuser ON mitarbeiter_in_raum.`Haus` = Raeume_Haeuser.Haus AND mitarbeiter_in_raum.Raum = Raeume_Haeuser.Raumnr GROUP BY Haus, Raum, Raeume_Haeuser.Flaeche),
raumauslastung AS (SELECT Raum, COUNT(Raum) as 'mitarbeiter_pro_raum' FROM mitarbeiter_in_raum GROUP BY Raum),
raumverteilung AS (SELECT raum_flaechen.Haus, raum_flaechen.RAUM, raum_flaechen.freie_flaeche, raumauslastung.mitarbeiter_pro_raum FROM raumauslastung INNER JOIN raum_flaechen ON raumauslastung.Raum = raum_flaechen.Raum)
SELECT rh.Sektion, rh.Haus, rh.Raumnr, rh.Nutzungsart, rh.anzahl_ap as 'Anzahl AP', rh.Flaeche as 'Gesamtfläche', IFNULL(rv.freie_flaeche, rh.Flaeche) as 'verfügbare Fläche', IFNULL(rv.mitarbeiter_pro_raum, 0) as 'Anzahl zugeordnete Mitarbeiter' FROM Raeume_Haeuser rh LEFT JOIN raumverteilung rv ON rh.Raumnr = rv.Raum and rh.Haus = rv.Haus WHERE Sektion = :Sektion ORDER BY rv.freie_flaeche