我移植从ZF1应用程序ZF2和的那部分我不得不重写我们的数据库映射器。
我与这条SQL语句挣扎:
SELECT full_name, GROUP_CONCAT(value)
FROM (
SELECT full_name, value
FROM my_table
ORDER BY id DESC
) as subtable
GROUP BY full_name
ORDER BY full_name DESC;
我试图解决的根本问题是,我需要在运行之前订购的子查询的结果GROUP_CONCAT
,我需要它为MySQL和SQLite的工作。 在MySQL中我可以简单地指定范围内的顺序GROUP_CONCAT
功能,但是这是不可能的使用SQLite,所以我需要的子查询它是与MySQL和SQLite的兼容。
在ZF1我可以这样做:
$fromSql = $db->select()
->from('my_table', array('full_name', 'value'))
->order('id DESC');
$sql = $db->select()
->from(array(
'subtable' => new Zend_Db_Expr('(' . $fromSql . ')')
), array(
'full_name' => 'full_name',
'value' => new Zend_Db_Expr('GROUP_CONCAT(subtable.value)'),
)
)
->group('full_name')
->order('full_name DESC');
然而,在使用子查询from子句似乎并不可能与ZF2。 有一些变通方法吗?