diff --git a/e107_handlers/admin_ui.php b/e107_handlers/admin_ui.php index 11d8560b9..2129570f0 100644 --- a/e107_handlers/admin_ui.php +++ b/e107_handlers/admin_ui.php @@ -2938,6 +2938,14 @@ class e_admin_controller_ui extends e_admin_controller { $qry = $listQry ? $listQry : "SELECT SQL_CALC_FOUND_ROWS ".$tableSFields." FROM ".$tableFrom; } + + // group field - currently auto-added only if there are joins + // TODO - groupField property + $groupField = ''; + if($joins && $this->getPrimaryName()) + { + $groupField = $tablePath.$this->getPrimaryName(); + } if($raw) { @@ -2945,6 +2953,7 @@ class e_admin_controller_ui extends e_admin_controller $rawData['tableFrom'] = $tableSFieldsArr; $rawData['joinsFrom'] = $tableSJoinArr; $rawData['joins'] = $joins; + $rawData['groupField'] = $groupField; $rawData['orderField'] = isset($this->fields[$orderField]) ? $this->fields[$orderField]['__tableField'] : ''; $rawData['orderType'] = $request->getQuery('asc') == 'desc' ? 'DESC' : 'ASC'; $rawData['limitFrom'] = false === $forceFrom ? intval($request->getQuery('from', 0)) : intval($forceFrom); @@ -2968,6 +2977,12 @@ class e_admin_controller_ui extends e_admin_controller { $qry .= " WHERE ".implode(" AND ", $searchQry); } + + // GROUP BY if needed + if($groupField) + { + $qry .= ' GROUP BY '.$groupField; + } // only when no custom order is required if($this->listOrder && !$request->getQuery('field') && !$request->getQuery('asc'))