warning entfernt bei bewerbungen im selben studiengang

This commit is contained in:
ma0048
2025-12-01 11:37:41 +01:00
parent 89ec51bd0a
commit a90affbdca
+64 -52
View File
@@ -316,60 +316,72 @@ class Person_model extends DB_Model
public function checkDuplicate($person_id) public function checkDuplicate($person_id)
{ {
$qry = " $qry = "SELECT person_id
WITH person AS ( FROM public.tbl_prestudent p
SELECT * JOIN
FROM public.tbl_person (
WHERE person_id = ? SELECT DISTINCT ON(prestudent_id) *
), FROM public.tbl_prestudentstatus
allePersonen AS ( WHERE prestudent_id IN
SELECT p.person_id (
FROM public.tbl_person p SELECT prestudent_id
JOIN person FROM public.tbl_prestudent
ON lower(p.vorname) = lower(person.vorname) WHERE person_id IN
AND lower(p.nachname) = lower(person.nachname) (
AND p.gebdatum = person.gebdatum SELECT p2.person_id
), FROM public.tbl_person p
lastStatus AS ( JOIN public.tbl_person p2
SELECT DISTINCT ON (tbl_prestudentstatus.prestudent_id) ON lower(p.vorname) = lower(p2.vorname)
tbl_prestudentstatus.prestudent_id, AND lower(p.nachname) = lower(p2.nachname)
tbl_prestudentstatus.status_kurzbz, AND p.gebdatum = p2.gebdatum
tbl_prestudent.studiengang_kz, AND p.person_id = ?
tbl_prestudent.person_id )
FROM public.tbl_prestudentstatus )
JOIN public.tbl_prestudent USING (prestudent_id) ORDER BY prestudent_id, datum DESC, insertamum DESC
WHERE tbl_prestudent.person_id IN (SELECT person_id FROM allePersonen) ) ps USING(prestudent_id)
ORDER BY tbl_prestudentstatus.prestudent_id, tbl_prestudentstatus.datum DESC, tbl_prestudentstatus.insertamum DESC JOIN public.tbl_status USING(status_kurzbz)
),
interessenten AS (
SELECT *
FROM lastStatus
WHERE status_kurzbz = 'Interessent' WHERE status_kurzbz = 'Interessent'
), AND studiengang_kz IN
keineInteressenten AS ( (
SELECT * SELECT studiengang_kz
FROM lastStatus FROM public.tbl_prestudent p
WHERE status_kurzbz != 'Interessent' JOIN
), (
doppeltePerson AS ( SELECT DISTINCT ON(prestudent_id) *
FROM public.tbl_prestudentstatus
WHERE prestudent_id IN
(
SELECT prestudent_id
FROM public.tbl_prestudent
WHERE person_id IN
(
SELECT p2.person_id
FROM public.tbl_person p
JOIN public.tbl_person p2
ON lower(p.vorname) = lower(p2.vorname)
AND lower(p.nachname) = lower(p2.nachname)
AND p.gebdatum = p2.gebdatum
AND p.person_id = ?
)
)
ORDER BY prestudent_id, datum DESC, insertamum DESC
) ps USING(prestudent_id)
JOIN public.tbl_status USING(status_kurzbz)
WHERE status_kurzbz = 'Abbrecher'
)
UNION
SELECT p2.person_id SELECT p2.person_id
FROM public.tbl_person p1 FROM tbl_person p1
JOIN public.tbl_prestudent ps1 ON ps1.person_id = p1.person_id JOIN tbl_prestudent ps ON p1.person_id = ps.person_id
JOIN public.tbl_person p2 INNER JOIN (
ON lower(p1.vorname) = lower(p2.vorname) SELECT vorname, nachname, gebdatum, person.person_id
AND lower(p1.nachname) = lower(p2.nachname) FROM tbl_person person
AND p1.gebdatum = p2.gebdatum JOIN tbl_prestudent sps ON person.person_id = sps.person_id
WHERE p1.person_id = ? ) p2
AND p1.person_id <> p2.person_id ON (lower(p1.vorname) = lower(p2.vorname) AND lower(p1.nachname) = lower(p2.nachname) AND p1.gebdatum = p2.gebdatum)
) WHERE p1.person_id != p2.person_id AND (p1.person_id = ?)";
SELECT DISTINCT(interessenten.person_id)
FROM interessenten
JOIN keineInteressenten
ON interessenten.studiengang_kz = keineInteressenten.studiengang_kz
WHERE interessenten.person_id = ?
UNION
SELECT DISTINCT person_id
FROM doppeltePerson";
return $this->execQuery($qry, array($person_id, $person_id, $person_id)); return $this->execQuery($qry, array($person_id, $person_id, $person_id));
} }