I'm not sure to understand the issue. In standard SQL, a valid grouped select goes like:

`SELECT field1,MAX(field2),COUNT(field3) FROM table GROUP BY field1`

and something like:

`SELECT field1,field2,field3 FROM table GROUP BY field1`

doesn't make sense and is rejected.

Therefore, from my point of view, the expected behaviour of the SQL mapper should be:

```php
$mapper->load('',array('group'=>'field1'));//SELECT field1 FROM table GROUP BY field1
$mapper->set('max','MAX(field2)');
$mapper->load('',array('group'=>'field1'));//SELECT field1,MAX(field2) FROM table GROUP BY field1
```

I understand that MySQL applies some sort of implicit `ANY` aggregating function on unaggregated fields but that's not valid SQL.

Anyway, why not simply split the logic in two? Let's return all fields when the engine is MySQL/SQLite and only grouped fields otherwise? That would not be the first time the code is adapted to fit engine differences.

The code would be:
```php
function find($filter=NULL,array $options=NULL,$ttl=0) {
//...
return $this->select(($options['group'] && !preg_match('/mysql|sqlite/',$this->engine)?
  $options['group']:
  implode(etc...
```