From 6f5de6a7869ec5d44548c3713d2d3e42d51079b4 Mon Sep 17 00:00:00 2001 From: Cris Date: Wed, 25 Sep 2019 15:39:42 +0200 Subject: [PATCH] Adapted SQL query: gruppen aggregated in one cell, not in seperated rows Before same lehreinheiten of same lector were shown in different rows, when they were taught in different groups. This caused incorrect contract inserts. One contract is for per lector and per lehreinheit. Gruppen are only displayed in one cell (aggregated if more) --- .../lehrauftrag/acceptLehrauftragData.php | 27 ++++++++++++----- .../lehrauftrag/approveLehrauftragData.php | 29 ++++++++++++++----- .../lehre/lehrauftrag/lehrauftragData.php | 27 ++++++++++++----- 3 files changed, 60 insertions(+), 23 deletions(-) diff --git a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php index 713698239..fcd22b3ea 100644 --- a/application/views/lehre/lehrauftrag/acceptLehrauftragData.php +++ b/application/views/lehre/lehrauftrag/acceptLehrauftragData.php @@ -13,6 +13,15 @@ FROM ( /* Lehraufträge and -vertragsstati */ SELECT *, + /* concatinated and aggregated gruppen */ + (SELECT + string_agg(concat(stg_oe_kurzbz, \'-\', semester, verband, gruppe, + \'\n\' || gruppe_kurzbz), \', \') + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheit_id = tmp_lehrauftraege.lehreinheit_id + ) AS "gruppe", /* existing contracts with status bestellt */ (SELECT datum @@ -55,8 +64,6 @@ FROM WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung) ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - CONCAT(stg.kurzbzlang, \'-\', legr.semester, legr.verband, legr.gruppe, - \'\n\' || legr.gruppe_kurzbz) AS "gruppe", TRUNC(lema.semesterstunden, 1) AS "stunden", TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag", vertrag_id, @@ -66,7 +73,6 @@ FROM JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) - JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id) JOIN PUBLIC.tbl_mitarbeiter ma USING (mitarbeiter_uid) JOIN PUBLIC.tbl_benutzer benutzer ON ma.mitarbeiter_uid = benutzer.uid @@ -91,6 +97,15 @@ FROM /* Projektbetreuungsaufträge and -vertragsstati */ SELECT *, + /* concatinated and aggregated gruppen */ + (SELECT + string_agg(concat(stg_oe_kurzbz, \'-\', semester, verband, gruppe, + \'\n\' || gruppe_kurzbz), \', \') + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheit_id = tmp_projektbetreuung.lehreinheit_id + ) AS "gruppe", (SELECT uid FROM @@ -132,7 +147,7 @@ FROM stg.studiengang_kz, upper(stg.oe_kurzbz) AS "stg_oe_kurzbz", person.person_id, - \'Betreuung\' AS "typ", + \'Betreuung\' AS "typ", (betreuerart_kurzbz || \' \' || (SELECT vorname || \' \' || nachname @@ -153,9 +168,6 @@ FROM ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - CONCAT(stg.kurzbzlang, - \'-\', legr.semester, legr.verband, legr.gruppe, - \'\n\' || legr.gruppe_kurzbz) AS "gruppe", TRUNC(pb.stunden, 1) AS "stunden", TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag", vertrag_id @@ -165,7 +177,6 @@ FROM JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) - JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id) JOIN PUBLIC.tbl_person person USING (person_id) LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id) LEFT JOIN lehre.tbl_vertrag_vertragsstatus vvs USING (vertrag_id) diff --git a/application/views/lehre/lehrauftrag/approveLehrauftragData.php b/application/views/lehre/lehrauftrag/approveLehrauftragData.php index f27e65170..05247f7ba 100644 --- a/application/views/lehre/lehrauftrag/approveLehrauftragData.php +++ b/application/views/lehre/lehrauftrag/approveLehrauftragData.php @@ -11,6 +11,15 @@ FROM ( /* Lehraufträge and -vertragsstati */ SELECT *, + /* concatinated and aggregated gruppen */ + (SELECT + string_agg(concat(stg_oe_kurzbz, \'-\', semester, verband, gruppe, + \'\n\' || gruppe_kurzbz), \', \') + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheit_id = tmp_lehrauftraege.lehreinheit_id + ) AS "gruppe", /* existing contracts with status bestellt */ (SELECT datum @@ -43,6 +52,7 @@ FROM NULL AS "projektarbeit_id", le.studiensemester_kurzbz, stg.studiengang_kz, + upper(stg.oe_kurzbz) AS "stg_oe_kurzbz", person.person_id, upper(lv.lehrtyp_kurzbz) AS "typ", (lv.bezeichnung || \' [\' || le.lehrform_kurzbz || \' \' || lv.semester || \'.Semester\' || @@ -52,8 +62,6 @@ FROM WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung) ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - CONCAT(stg.kurzbzlang, \'-\', legr.semester, legr.verband, legr.gruppe, - \'\n\' || legr.gruppe_kurzbz) AS "gruppe", (person.vorname || \' \' || person.nachname) AS "lektor", TRUNC(lema.semesterstunden, 1) AS "stunden", TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag", @@ -64,7 +72,6 @@ FROM JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) - JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id) JOIN PUBLIC.tbl_mitarbeiter ma USING (mitarbeiter_uid) JOIN PUBLIC.tbl_benutzer benutzer ON ma.mitarbeiter_uid = benutzer.uid @@ -88,6 +95,15 @@ FROM /* Projektbetreuungsaufträge and -vertragsstati */ SELECT *, + /* concatinated and aggregated gruppen */ + (SELECT + string_agg(concat(stg_oe_kurzbz, \'-\', semester, verband, gruppe, + \'\n\' || gruppe_kurzbz), \', \') + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheit_id = tmp_projektbetreuung.lehreinheit_id + ) AS "gruppe", (SELECT uid FROM @@ -127,8 +143,9 @@ FROM pa.projektarbeit_id AS "projektarbeit_id", le.studiensemester_kurzbz, stg.studiengang_kz, + upper(stg.oe_kurzbz) AS "stg_oe_kurzbz", person.person_id, - \'Betreuung\' AS "typ", + \'Betreuung\' AS "typ", (betreuerart_kurzbz || \' \' || (SELECT vorname || \' \' || nachname @@ -149,9 +166,6 @@ FROM ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - CONCAT(stg.kurzbzlang, - \'-\', legr.semester, legr.verband, legr.gruppe, - \'\n\' || legr.gruppe_kurzbz) AS "gruppe", (vorname || \' \' || nachname) AS "lektor", TRUNC(pb.stunden, 1) AS "stunden", TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag", @@ -162,7 +176,6 @@ FROM JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) - JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id) JOIN PUBLIC.tbl_person person USING (person_id) LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id) JOIN PUBLIC.tbl_studiengang stg diff --git a/application/views/lehre/lehrauftrag/lehrauftragData.php b/application/views/lehre/lehrauftrag/lehrauftragData.php index 5cf9bbb4c..b342613de 100644 --- a/application/views/lehre/lehrauftrag/lehrauftragData.php +++ b/application/views/lehre/lehrauftrag/lehrauftragData.php @@ -11,6 +11,15 @@ FROM ( /* Lehraufträge and -vertragsstati */ SELECT *, + /* concatinated and aggregated gruppen */ + (SELECT + string_agg(concat(stg_oe_kurzbz, \'-\', semester, verband, gruppe, + \'\n\' || gruppe_kurzbz), \', \') + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheit_id = tmp_lehrauftraege.lehreinheit_id + ) AS "gruppe", /* existing contracts with status bestellt */ (SELECT datum @@ -43,6 +52,7 @@ FROM NULL AS "projektarbeit_id", le.studiensemester_kurzbz, stg.studiengang_kz, + upper(stg.oe_kurzbz) AS "stg_oe_kurzbz", person.person_id, upper(lv.lehrtyp_kurzbz) AS "typ", (lv.bezeichnung || \' [\' || le.lehrform_kurzbz || \' \' || lv.semester || \'.Semester\' || @@ -52,8 +62,6 @@ FROM WHEN oe.organisationseinheittyp_kurzbz = \'Department\' THEN (\'DEP \' || oe.bezeichnung) ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - CONCAT(stg.kurzbzlang, \'-\', legr.semester, legr.verband, legr.gruppe, - \'\n\' || legr.gruppe_kurzbz) AS "gruppe", (person.vorname || \' \' || person.nachname) AS "lektor", TRUNC(lema.semesterstunden, 1) AS "stunden", TRUNC((lema.semesterstunden * lema.stundensatz), 2) AS "betrag", @@ -64,7 +72,6 @@ FROM JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) - JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id) JOIN PUBLIC.tbl_mitarbeiter ma USING (mitarbeiter_uid) JOIN PUBLIC.tbl_benutzer benutzer ON ma.mitarbeiter_uid = benutzer.uid @@ -88,6 +95,15 @@ FROM /* Projektbetreuungsaufträge and -vertragsstati */ SELECT *, + /* concatinated and aggregated gruppen */ + (SELECT + string_agg(concat(stg_oe_kurzbz, \'-\', semester, verband, gruppe, + \'\n\' || gruppe_kurzbz), \', \') + FROM + lehre.tbl_lehreinheitgruppe + WHERE + lehreinheit_id = tmp_projektbetreuung.lehreinheit_id + ) AS "gruppe", (SELECT uid FROM @@ -127,6 +143,7 @@ FROM pa.projektarbeit_id AS "projektarbeit_id", le.studiensemester_kurzbz, stg.studiengang_kz, + upper(stg.oe_kurzbz) AS "stg_oe_kurzbz", person.person_id, \'Betreuung\' AS "typ", (betreuerart_kurzbz || \' \' || @@ -149,9 +166,6 @@ FROM ELSE (oe.organisationseinheittyp_kurzbz || \' \' || oe.bezeichnung) END AS "lv_oe_kurzbz", - CONCAT(stg.kurzbzlang, - \'-\', legr.semester, legr.verband, legr.gruppe, - \'\n\' || legr.gruppe_kurzbz) AS "gruppe", (vorname || \' \' || nachname) AS "lektor", TRUNC(pb.stunden, 1) AS "stunden", TRUNC((pb.stunden * pb.stundensatz), 2) AS "betrag", @@ -162,7 +176,6 @@ FROM JOIN lehre.tbl_lehreinheit le USING (lehreinheit_id) JOIN lehre.tbl_lehrveranstaltung lv USING (lehrveranstaltung_id) JOIN PUBLIC.tbl_organisationseinheit oe USING (oe_kurzbz) - JOIN lehre.tbl_lehreinheitgruppe legr USING (lehreinheit_id) JOIN PUBLIC.tbl_person person USING (person_id) LEFT JOIN lehre.tbl_vertrag vertrag USING (vertrag_id) JOIN PUBLIC.tbl_studiengang stg