I have tested all the suggestions, unfortunately without success
The solution that works for me is to add to the GROUP BY all listed columns.
The sql statement looks like this for me now!
$sql = 'SELECT ( SELECT COUNT(*) '
. 'FROM `'.$oDb->TablePrefix.'pages` `x` '
. 'WHERE x.`parent`=p.`page_id`'
. ') `children`, '
. 'MAX(s.`publ_start` + s.`publ_end`) published, '
. '(SELECT MAX(`position`) FROM `'.$oDb->TablePrefix.'pages` '
. 'WHERE `parent`='.$parent.') max_position, '
. '0 min_position, '
. 'p.`page_id`, '
. 'p.`position`, p.`parent`, p.`link`, p.`level`, p.`language`, p.`admin_groups`, '
. 'p.`admin_users`, p.`viewing_groups`, p.`viewing_users`, p.`visibility`, '
. 'p.`menu_title`, p.`page_title`, p.`page_trail`, '
. 'GROUP_CONCAT(CAST(CONCAT(s.`section_id`, \' - \', s.`module`, \' \', s.`title`) AS CHAR) ORDER BY s.`position` SEPARATOR \'\n\') `section_list` '
. 'FROM `'.$oDb->TablePrefix.'pages` p '
. 'INNER JOIN `'.$oDb->TablePrefix.'sections` s '
. 'ON p.`page_id`=s.`page_id` '
. 'WHERE `parent`='.$parent.' '
. (($oReg->PageTrash != 'inline') ? 'AND `visibility`!=\'deleted\' ' : '')
. 'GROUP BY p.`page_id`,p.`position`, p.`parent`, p.`link`, p.`level`, p.`language`, p.`admin_groups`, '
. 'p.`admin_users`, p.`viewing_groups`, p.`viewing_users`, p.`visibility`, '
. 'p.`menu_title`, p.`page_title`, p.`page_trail` '
. 'ORDER BY p.`position` ASC';
If you like it, I will release a patch.
Dietmar