#ifdef PRJ /* PRJ_VIE.SRC * * $Revision$ * $Id$ */ -- selecteer alle verdiepingen van een bepaald project CREATE_VIEW(prj_v_alg_verdiepingen,0) AS SELECT DISTINCT alg_verdieping_key, prj_scenario_key FROM prj_ruimte WHERE alg_verdieping_key IS NOT NULL; -- aanduiding ruimten van ALG CREATE_VIEW(prj_v_alg_ruimte_aanduiding,0) AS SELECT ALG_R.alg_ruimte_key , to_number(NULL) prj_scenario_key , ALG_G.alg_gebouw_code ||' - ' || ALG_V.alg_verdieping_code ||' - ' || ALG_R.alg_ruimte_nr plaatsaanduiding FROM alg_ruimte ALG_R , alg_verdieping ALG_V , alg_gebouw ALG_G WHERE ALG_R.alg_verdieping_key = ALG_V.alg_verdieping_key AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key; -- wat suggesties:(gebruiken we ..1 en..2 of alg vs prj?) CREATE_VIEW(prj_v_ruimte_voor_en_na, 0) (alg_verdieping_key, alg_ruimte_key1, alg_ruimte_nr1, alg_srtruimte_key1, alg_srtruimte_omschrijving1, alg_ruimte_bruto_vloeropp1, alg_ruimte_nr2, alg_srtruimte_key2, alg_srtruimte_omschrijving2, alg_ruimte_bruto_vloeropp2 ) AS SELECT rx.alg_verdieping_key, rx.alg_ruimte_key, r.alg_ruimte_nr, r.alg_srtruimte_key, sr1.alg_srtruimte_omschrijving, r.alg_ruimte_bruto_vloeropp, rx.prj_ruimte_nr, rx.alg_srtruimte_key, sr2.alg_srtruimte_omschrijving, rx.prj_ruimte_bruto_vloeropp FROM prj_ruimte rx, alg_ruimte r, alg_srtruimte sr1, alg_srtruimte sr2 WHERE rx.alg_ruimte_key = r.alg_ruimte_key(+) AND r.alg_srtruimte_key = sr1.alg_srtruimte_key(+) AND rx.alg_srtruimte_key = sr2.alg_srtruimte_key; -- GRAFISCHE VIEWS CREATE_VIEW (cad_v_sync_prj_ruimte,0) (prj_scenario_key, prj_ruimte_key, alg_verdieping_key, cadlabel) AS SELECT r.prj_scenario_key, r.prj_ruimte_key, r.alg_verdieping_key, r.prj_ruimte_nr FROM prj_ruimte r; -- GRAFISCHE THEMAS -- GRAFISCHE THEMAS -- GRAFISCHE THEMAS -- GRAFISCHE THEMAS CREATE_VIEW (prj_v_cad_thema_aantalwp,0) (prj_ruimte_key, waarde) AS SELECT wp.prj_ruimte_key, COUNT (*) FROM prj_werkplek wp WHERE wp.prj_werkplek_verwijder IS NULL GROUP BY prj_ruimte_key; CREATE_VIEW (prj_v_cad_thema_afdeling,0) (prj_ruimte_key, waarde, waarde_key) AS SELECT x.prj_ruimte_key, DECODE (x.aantal, 1, SUBSTR (x.sp, 1, 60), 'Meerdere!'), DECODE (x.aantal, 1, x.sp_key, NULL) FROM (SELECT ra.prj_ruimte_key, MIN (d.prs_afdeling_naam) sp, MIN (d.prs_afdeling_key) sp_key, COUNT (ra.prs_afdeling_key) aantal FROM prj_ruimteafdeling ra, prs_v_aanwezigafdeling d WHERE ra.prj_ruimteafdeling_verwijder IS NULL AND ra.prs_afdeling_key = d.prs_afdeling_key GROUP BY ra.prj_ruimte_key) x; -- Update is: oude situatie weg, nieuwe wordt gedefinieerd. -- Insert is: toevoegen aan oude situatie CREATE_TRIGGER(prj_t_cad_thema_afdeling_i_iu) INSTEAD OF INSERT OR UPDATE ON prj_v_cad_thema_afdeling BEGIN IF UPDATING -- oude weggooien THEN DELETE FROM prj_ruimteafdeling WHERE prj_ruimte_key = :new.prj_ruimte_key AND prs_afdeling_key <> :new.waarde_key; END IF; BEGIN INSERT INTO prj_ruimteafdeling (prj_ruimte_key, prs_afdeling_key) VALUES (:new.prj_ruimte_key, :new.waarde_key); EXCEPTION WHEN DUP_VAL_ON_INDEX -- Hij was al aanwezig THEN NULL; END; END; / // De afdelingsbezetting maar dan gebaseerd op de afdelingen // van de de personen die op de werkplekken zitten CREATE_VIEW (prj_v_cad_thema_prsafdeling,0) (prj_ruimte_key, waarde) AS SELECT wx.prj_ruimte_key, d.prs_afdeling_naam FROM prs_afdeling d, prj_perslidwerkplek pwx, prj_werkplek wx, prs_perslid p WHERE pwx.prj_werkplek_key = wx.prj_werkplek_key AND pwx.prs_perslid_key = p.prs_perslid_key AND p.prs_afdeling_key=d.prs_afdeling_key AND pwx.prj_perslidwerkplek_verwijder IS NULL AND wx.prj_werkplek_verwijder IS NULL AND pwx.prs_perslid_key IS NOT NULL; CREATE_VIEW (prj_v_cad_thema_srtruimte,0) (prj_ruimte_key, waarde, waarde_key) AS SELECT r.prj_ruimte_key, sr.alg_srtruimte_omschrijving, sr.alg_srtruimte_key FROM prj_ruimte r, alg_srtruimte sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key; CREATE_TRIGGER(prj_t_cad_thema_srtruimte_i_iu) INSTEAD OF INSERT OR UPDATE ON prj_v_cad_thema_srtruimte FOR EACH ROW BEGIN UPDATE prj_ruimte SET alg_srtruimte_key = :new.waarde_key WHERE prj_ruimte_key = :new.prj_ruimte_key; END; / // De gemiddelde oppervlakte per werkplek (GEEN rekening houdend met vaste werkplekoppervlaktes) CREATE_VIEW (prj_v_cad_thema_wpopp,0) (prj_ruimte_key, waarde) AS SELECT wp.prj_ruimte_key, r.prj_ruimte_bruto_vloeropp / COUNT (prj_werkplek_key) FROM prj_werkplek wp, prj_ruimte r WHERE wp.prj_werkplek_verwijder IS NULL AND wp.prj_ruimte_key = r.prj_ruimte_key GROUP BY wp.prj_ruimte_key, r.prj_ruimte_bruto_vloeropp; // De hoeveelheid beschikbare oppervlakte (indien de werkplekken een vaste oppervlakte hebben, anders past het altijd) CREATE_VIEW (prj_v_cad_thema_restopp,0) (prj_ruimte_key, waarde) AS SELECT wp.prj_ruimte_key, SUM (r.prj_ruimte_bruto_vloeropp - NVL (prj_werkplek_opp, 0)) FROM prj_werkplek wp, prj_ruimte r WHERE wp.prj_werkplek_verwijder IS NULL AND wp.prj_ruimte_key = r.prj_ruimte_key AND wp.prj_werkplek_vastopp IS NOT NULL GROUP BY wp.prj_ruimte_key; // Hulpview voor de daaropvolgende CREATE_VIEW (prj_v_cad_thema_onderhanden0, 0) (prj_ruimte_key1, prj_ruimte_key2) AS SELECT prj_rkey1, prj_rkey2 FROM (SELECT algprs.prs_werkplek_key oud_wpkey, prj_w.prs_werkplek_key new_wpkey, algprs.alg_ruimte_key oud_rkey, prj_r.alg_ruimte_key new_rkey, prj_zoek.prj_ruimte_key prj_rkey1, prj_r.prj_ruimte_key prj_rkey2 FROM prj_ruimte prj_r, prj_werkplek prj_w, prj_perslidwerkplek prj_wp, prj_ruimte prj_zoek, (SELECT prs_w.prs_werkplek_key, prs_w.prs_werkplek_volgnr, prs_pw.prs_perslidwerkplek_key, prs_w.prs_alg_ruimte_key alg_ruimte_key, prs_p.prs_afdeling_key, prs_pw.prs_perslid_key FROM prs_werkplek prs_w, prs_perslidwerkplek prs_pw, prs_perslid prs_p WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key AND prs_pw.prs_perslid_key IS NOT NULL AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key AND prs_w.prs_werkplek_virtueel = 0 UNION ALL SELECT prs_w.prs_werkplek_key, prs_w.prs_werkplek_volgnr, TO_NUMBER (NULL), prs_w.prs_alg_ruimte_key, TO_NUMBER (NULL), TO_NUMBER (NULL) FROM prs_werkplek prs_w, prs_v_werkplek_bezetting prs_wb WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key AND prs_w.prs_werkplek_virtueel = 0 AND prs_wb.prs_werkplek_bezetting < 100) algprs WHERE prj_wp.prs_perslidwerkplek_key = algprs.prs_perslidwerkplek_key AND prj_wp.prj_werkplek_key = prj_w.prj_werkplek_key AND prj_w.prj_ruimte_key = prj_r.prj_ruimte_key AND algprs.alg_ruimte_key = prj_zoek.alg_ruimte_key) WHERE oud_wpkey <> new_wpkey OR oud_rkey <> new_rkey; // Boolean view die aangeeft waar iets gewijzigd is, de 1 en 2 maken het verschil tussen van en naar.. CREATE_VIEW (prj_v_cad_thema_onderhanden,0) (prj_ruimte_key, waarde) AS SELECT prj_ruimte_key1, '1' FROM prj_v_cad_thema_onderhanden0 UNION ALL SELECT prj_ruimte_key2, '2' FROM prj_v_cad_thema_onderhanden0; -- GRAFISCHE LABELS -- GRAFISCHE LABELS -- GRAFISCHE LABELS -- GRAFISCHE LABELS -- GRAFISCHE LABELS CREATE_VIEW (prj_v_cad_label_bewoner,0) (prj_ruimte_key, waarde, highlight) AS SELECT DISTINCT prj_ruimte_key, waarde, DECODE (prj_selectie_key, NULL, 0, 1) highlight FROM (SELECT prj_r.prj_scenario_key, prs_w.prj_ruimte_key, prs_p.prs_perslid_naam || DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters ) || DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')' ) waarde, 'PRJ_WERKPLEK' label_soort, prs_pw.prj_werkplek_key label_key FROM PRJ_RUIMTE prj_r, PRJ_WERKPLEK prs_w, PRJ_PERSLIDWERKPLEK prs_pw, PRS_PERSLID prs_p WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key AND prs_pw.prs_perslid_key IS NOT NULL AND prs_w.prj_werkplek_verwijder IS NULL AND prs_pw.prj_perslidwerkplek_verwijder IS NULL AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key) vdata, PRJ_SELECTIE ps WHERE ps.prj_scenario_key(+) = vdata.prj_scenario_key AND ps.prj_selectie_tabelnaam(+) = label_soort AND ps.prj_selectie_tabelkey(+) = label_key; // Note: the subselect in the FROM is *necessary* to force these record to be retrieved by outer join // else deleted prj_perslidwerkplek records are retrieved by inner join, and do not show up if // the _verwijder IS NULL is then applied. CREATE_VIEW (prj_v_cad_label_bewonerwp, 0) (prj_ruimte_key, waarde, highlight) AS SELECT DISTINCT prj_ruimte_key, waarde, DECODE (prj_selectie_key, NULL, 0, 1) FROM (SELECT prj_r.prj_scenario_key, prs_w.prj_ruimte_key, CHR (1) || prs_w.prj_werkplek_volgnr || ' ' || prs_p.prs_perslid_naam || DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters ) || DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')' ) || ': ' || TO_CHAR (NVL (prs_pw.prj_perslidwerkplek_bezetting, 0 ) ) || '%' waarde, 'PRJ_WERKPLEK' label_soort, prs_pw.prj_werkplek_key label_key FROM PRJ_RUIMTE prj_r, PRJ_WERKPLEK prs_w, (SELECT * FROM PRJ_PERSLIDWERKPLEK WHERE prj_perslidwerkplek_verwijder IS NULL) prs_pw, PRS_PERSLID prs_p WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key AND prs_pw.prs_perslid_key IS NOT NULL AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key UNION SELECT -1, prs_w.prj_ruimte_key, CHR (1) || prs_w.prj_werkplek_volgnr || ' Vrij: ' || TO_CHAR ( 100 - NVL (SUM (prs_wb.prj_perslidwerkplek_bezetting ), 0 ) ) || '%', 'PRJ_WERKPLEK', prs_w.prj_werkplek_key FROM PRJ_WERKPLEK prs_w, (SELECT * FROM PRJ_PERSLIDWERKPLEK WHERE prj_perslidwerkplek_verwijder IS NULL) prs_wb WHERE prs_w.prj_werkplek_key = prs_wb.prj_werkplek_key(+) AND prj_werkplek_verwijder IS NULL GROUP BY prs_w.prj_ruimte_key, prs_w.prj_werkplek_key, prs_w.prj_werkplek_volgnr HAVING SUM (NVL (prs_wb.prj_perslidwerkplek_bezetting, 0) ) < 100) DATA, PRJ_SELECTIE ps WHERE ps.prj_scenario_key(+) = DATA.prj_scenario_key AND ps.prj_selectie_tabelnaam(+) = label_soort AND ps.prj_selectie_tabelkey(+) = label_key; CREATE_VIEW(prj_v_werkplek_oppervlakte, 0) (prj_werkplek_key, wpopp) AS SELECT prj_werkplek_key, DECODE (prj_werkplek_vastopp,1, prj_werkplek_opp, (prj_ruimte_bruto_vloeropp - totvastopp) / vrijwp ) wpopp FROM (SELECT prj_ruimte_key, COUNT (*), COUNT (*) - COUNT (prj_werkplek_vastopp) vrijwp, COUNT (prj_werkplek_vastopp) vastwp, SUM (DECODE (prj_werkplek_vastopp,1, prj_werkplek_opp, 0 ) ) totvastopp FROM prj_werkplek WHERE prj_werkplek_verwijder is null GROUP BY prj_ruimte_key) selopp, prj_ruimte prj_r, prj_werkplek prj_w WHERE prj_r.prj_ruimte_key = prj_w.prj_ruimte_key AND selopp.prj_ruimte_key = prj_r.prj_ruimte_key AND prj_werkplek_verwijder is null ORDER BY prj_werkplek_key; CREATE_VIEW (prj_v_cad_label_werkplekken,0) (prj_ruimte_key, waarde, highlight) AS SELECT prj_ruimte_key, CHR (1) || prj_werkplek_volgnr || ' (' || TO_CHAR (wpopp, 'FM9999.0') || 'm2 ' || TO_CHAR (bez) || '%)' waarde, DECODE (SIGN (bez - 100), 1, 2, DECODE (prj_selectie_key, NULL, 0, 1) ) highlight FROM (SELECT prj_scenario_key, prs_w.prj_ruimte_key, prs_w.prj_werkplek_volgnr, SUM (NVL (prs_pw.prj_perslidwerkplek_bezetting, 0)) bez, 'PRJ_WERKPLEK' label_soort, prs_w.prj_werkplek_key label_key, wpopp FROM PRJ_RUIMTE prj_r, PRJ_WERKPLEK prs_w, prj_v_werkplek_oppervlakte pwo, (SELECT * FROM PRJ_PERSLIDWERKPLEK WHERE prj_perslidwerkplek_verwijder IS NULL) prs_pw WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key(+) AND pwo.prj_werkplek_key(+) = prs_w.prj_werkplek_key AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key AND prs_w.prj_werkplek_verwijder IS NULL GROUP BY prj_scenario_key, prs_w.prj_ruimte_key, prs_w.prj_werkplek_volgnr, 'PRJ_WERKPLEK', prs_w.prj_werkplek_key, wpopp) vdata, PRJ_SELECTIE ps WHERE ps.prj_scenario_key(+) = vdata.prj_scenario_key AND ps.prj_selectie_tabelnaam(+) = label_soort AND ps.prj_selectie_tabelkey(+) = label_key; CREATE_VIEW(prj_v_cad_v_label_srtruimteopp, 0) (prj_ruimte_key, waarde) AS SELECT r.prj_ruimte_key, sr.alg_srtruimte_omschrijving || ' (' || r.prj_ruimte_bruto_vloeropp || ' m2)' FROM PRJ_RUIMTE r, ALG_SRTRUIMTE sr WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key AND prj_ruimte_verwijder IS NULL; / //De objecten in een ruimte (de soort-keys kunnen worden gebruikt om onroerende objecten uit te sluiten) CREATE_VIEW (prj_v_cad_label_object,0) (prj_ruimte_key, waarde, label_soort, label_key, fclt_ins_discipline_key, ins_srtgroep_key, ins_srtdeel_key ) AS SELECT prj_ruimte_key, s.ins_srtdeel_omschrijving || ' ' || prj_deel_omschrijving, 'PRJ_DEEL', prj_deel_key, ins_discipline_key, g.ins_srtgroep_key, d.ins_srtdeel_key FROM prj_deel d, ins_srtdeel s, ins_srtgroep g WHERE d.ins_srtdeel_key = s.ins_srtdeel_key AND d.prj_deel_verwijder IS NULL AND g.ins_srtgroep_key = s.ins_srtgroep_key; //---------------- // Personen met van en naar CREATE_VIEW (prj_v_prs_verhuizing, 0) (prj_scenario_key, prs_perslid_key, prs_afdeling_key, alg_ruimte_key, prs_werkplek_key, alg_ruimte_key2, prj_ruimte_key2, prs_werkplek_key2, prj_werkplek_key2 ) AS SELECT rx.prj_scenario_key, p.prs_perslid_key, d.prs_afdeling_key, w.prs_alg_ruimte_key, w.prs_werkplek_key, rx.alg_ruimte_key, rx.prj_ruimte_key, wx.prs_werkplek_key, wx.prj_werkplek_key FROM prs_v_aanwezigperslid p, prs_v_afdeling d, prs_werkplek w, prs_perslidwerkplek pwp, prj_werkplek wx, prj_perslidwerkplek pwpx, prj_ruimte rx WHERE d.prs_afdeling_key = p.prs_afdeling_key AND pwp.prs_perslid_key = p.prs_perslid_key AND w.prs_werkplek_key = pwp.prs_werkplek_key AND pwpx.prs_perslid_key(+) = p.prs_perslid_key AND wx.prj_werkplek_key(+) = pwpx.prj_werkplek_key AND rx.prj_ruimte_key(+) = wx.prj_ruimte_key AND pwp.prs_perslid_key IS NOT NULL; // afdelingen met van en naar CREATE_VIEW (prj_v_afd_verhuizing, 0) (prj_scenario_key, prs_afdeling_key, alg_ruimte_key, alg_ruimte_key2, prj_ruimte_key2 ) AS SELECT rx.prj_scenario_key, d.prs_afdeling_key, ra.alg_ruimte_key, rx.alg_ruimte_key, rx.prj_ruimte_key FROM prs_v_afdeling d, prs_ruimteafdeling ra, prj_ruimteafdeling rax, prj_ruimte rx WHERE ra.prs_afdeling_key = d.prs_afdeling_key AND rax.prs_afdeling_key(+) = d.prs_afdeling_key AND rx.prj_ruimte_key(+) = rax.prj_ruimte_key AND ra.prs_ruimteafdeling_verwijder IS NULL; REGISTERRUN('$Id$') #endif // PRJ