From 484a53a37c897db15ff575c085237effb87cb2a9 Mon Sep 17 00:00:00 2001 From: Manfred Kindl Date: Fri, 26 Apr 2019 17:20:33 +0200 Subject: [PATCH] Reihungstestverwaltung BugFix Doppelte PreStudenten --- vilesci/stammdaten/reihungstestverwaltung.php | 103 ++++++++++++------ 1 file changed, 68 insertions(+), 35 deletions(-) diff --git a/vilesci/stammdaten/reihungstestverwaltung.php b/vilesci/stammdaten/reihungstestverwaltung.php index c05a18b49..08078759d 100644 --- a/vilesci/stammdaten/reihungstestverwaltung.php +++ b/vilesci/stammdaten/reihungstestverwaltung.php @@ -2547,59 +2547,92 @@ if($reihungstest_id!='') { //Liste der Interessenten die zum Reihungstest angemeldet sind $qry = " - SELECT DISTINCT - rt_person_id, + SELECT DISTINCT rt_person_id, rt_id, - '0' as prestudent_id, + '0' AS prestudent_id, tbl_rt_person.person_id, vorname, nachname, - ort_kurzbz, - studienplan_id, - studiengang_kz, + tbl_rt_person.ort_kurzbz, + tbl_rt_person.studienplan_id, + tbl_prestudent.studiengang_kz, gebdatum, geschlecht, - punkte - ,( + punkte, + ( SELECT kontakt FROM tbl_kontakt WHERE kontakttyp = 'email' AND person_id = tbl_rt_person.person_id AND zustellung = true LIMIT 1 - ) AS email - ,( + ) AS email, + ( SELECT ausbildungssemester - FROM public.tbl_prestudentstatus + FROM PUBLIC.tbl_prestudentstatus WHERE prestudent_id = tbl_prestudent.prestudent_id AND datum = ( SELECT MAX(datum) - FROM public.tbl_prestudentstatus + FROM PUBLIC.tbl_prestudentstatus WHERE prestudent_id = tbl_prestudent.prestudent_id AND status_kurzbz = 'Interessent' ) LIMIT 1 - ) AS ausbildungssemester - ,( - SELECT orgform_kurzbz - FROM public.tbl_prestudentstatus - WHERE prestudent_id = tbl_prestudent.prestudent_id - AND datum = ( - SELECT MAX(datum) - FROM public.tbl_prestudentstatus - WHERE prestudent_id = tbl_prestudent.prestudent_id - AND status_kurzbz = 'Interessent' - ) LIMIT 1 - ) AS orgform_kurzbz - FROM - public.tbl_rt_person - JOIN public.tbl_person USING (person_id) - JOIN public.tbl_prestudent ON (tbl_rt_person.person_id=tbl_prestudent.person_id) - WHERE - rt_id = ".$db->db_add_param($reihungstest_id, FHC_INTEGER)." - AND tbl_rt_person.studienplan_id IN ( - SELECT studienplan_id - FROM public.tbl_prestudentstatus - WHERE prestudent_id=tbl_prestudent.prestudent_id) - ORDER BY ort_kurzbz NULLS FIRST,nachname,vorname"; + ) AS ausbildungssemester, + ( + SELECT orgform_kurzbz + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND datum = ( + SELECT MAX(datum) + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + AND status_kurzbz = 'Interessent' + ) LIMIT 1 + ) AS orgform_kurzbz + FROM PUBLIC.tbl_rt_person + JOIN PUBLIC.tbl_person USING (person_id) + JOIN PUBLIC.tbl_reihungstest rt ON (rt_id = rt.reihungstest_id) + JOIN PUBLIC.tbl_prestudent ON (tbl_rt_person.person_id = tbl_prestudent.person_id) + JOIN PUBLIC.tbl_prestudentstatus USING (prestudent_id) + WHERE rt_id = ".$db->db_add_param($reihungstest_id, FHC_INTEGER)." + AND tbl_rt_person.studienplan_id IN ( + SELECT studienplan_id + FROM PUBLIC.tbl_prestudentstatus + WHERE prestudent_id = tbl_prestudent.prestudent_id + ) + AND tbl_prestudentstatus.studiensemester_kurzbz IN ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE ende <= ( + SELECT start + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY ende DESC LIMIT 1 + ) + + UNION + + ( + SELECT studiensemester_kurzbz + FROM PUBLIC.tbl_studiensemester + WHERE start >= ( + SELECT ende + FROM PUBLIC.tbl_studiensemester + WHERE studiensemester_kurzbz = rt.studiensemester_kurzbz + ) + ORDER BY start ASC LIMIT 1 + ) + ) + ORDER BY ort_kurzbz NULLS FIRST, + nachname, + vorname"; $mailto = ''; $result_arr = array();