- Added method addGroupBy to DB_Model

- Changed the query present in method getPrestudentMultiAssign of Prestudent_model
This commit is contained in:
Paolo
2017-04-05 16:58:23 +02:00
parent 4806b4f0e4
commit a2d2296f33
2 changed files with 46 additions and 6 deletions
+20
View File
@@ -468,6 +468,26 @@ class DB_Model extends FHC_Model
return success(true);
}
/** ---------------------------------------------------------------
* Add one or more fields in the group by clause
*
* @return void
*/
public function addGroupBy($fields)
{
if (!isset($fields)
|| (!is_array($fields) && !is_string($fields))
|| (is_array($fields) && count($fields) == 0)
|| (is_string($fields) && $fields == ''))
{
return error(FHC_MODEL_ERROR, FHC_MODEL_ERROR);
}
$this->db->group_by($fields);
return success(true);
}
/** ---------------------------------------------------------------
* Reset the query builder state
*
+26 -6
View File
@@ -88,7 +88,7 @@ class Prestudent_model extends DB_Model
public function getPrestudentMultiAssign($studiengang = null, $studiensemester = null, $gruppe = null, $reihungstest = null, $stufe = null)
{
$this->addSelect(
'DISTINCT ON(p.person_id, prestudent_id) p.person_id,
'p.person_id,
prestudent_id,
p.nachname,
p.vorname,
@@ -102,19 +102,18 @@ class Prestudent_model extends DB_Model
s.bezeichnung AS studienplan,
ps.rt_stufe,
aufnahmegruppe_kurzbz,
rtp.punkte'
SUM(rtp.punkte) AS punkte'
);
$this->addJoin('public.tbl_rt_person rtp', 'person_id');
$this->addJoin('public.tbl_person p', 'person_id', 'LEFT');
$this->addJoin(
'(
SELECT person_id,
SELECT DISTINCT ON(person_id) person_id,
kontakt
FROM public.tbl_kontakt
WHERE zustellung = TRUE
AND kontakttyp = \'email\'
ORDER BY kontakt_id DESC
ORDER BY person_id, kontakt_id DESC
) k',
'person_id',
'LEFT'
@@ -125,6 +124,8 @@ class Prestudent_model extends DB_Model
$this->addJoin('public.tbl_studiengang sg', 'sg.studiengang_kz = so.studiengang_kz');
$this->addJoin('public.tbl_studiengangstyp sgt', 'typ');
$this->addJoin('public.tbl_rt_person rtp', 'rtp.person_id = p.person_id AND rtp.studienplan_id = s.studienplan_id', 'LEFT');
$this->addOrder('p.person_id', 'ASC');
$this->addOrder('prestudent_id', 'ASC');
@@ -132,7 +133,7 @@ class Prestudent_model extends DB_Model
if ($studiengang != null)
{
$parametersArray['sg.studiengang_kz'] = $studiengang;
$parametersArray['public.tbl_prestudent.studiengang_kz'] = $studiengang;
}
if ($studiensemester != null)
@@ -155,6 +156,25 @@ class Prestudent_model extends DB_Model
$parametersArray['ps.rt_stufe'] = $stufe;
}
$this->addGroupBy(
array(
'p.person_id',
'prestudent_id',
'p.nachname',
'p.vorname',
'p.geschlecht',
'p.gebdatum',
'k.kontakt',
'sg.kurzbzlang',
'sg.bezeichnung',
'sg.orgform_kurzbz',
'sgt.bezeichnung',
's.bezeichnung',
'ps.rt_stufe',
'aufnahmegruppe_kurzbz'
)
);
return $this->loadWhere($parametersArray);
}
}