zend_db获取"选择...,(选择...)作为x从..."

时间:2012-10-19 16:01:41

标签: zend-framework zend-db

我有一个无法用Zend_Db_Select构建的查询

SELECT `f`.*,          
        (SELECT Sum(x) AS `y`
        FROM   z AS pf
        WHERE  pf.q_id = f.id) AS w
FROM  f ...
WHERE ...
GROUP  BY `f`.`id`  

所以目前我正在手动运行$db->fetchAll($sql)

我如何获得

select f.* , (select ...) as `something` from ...

我在考虑使用->column('f.*, (select...)'),但它不起作用,

如果我这样做(选择...,id)然后加入该id,它可能可以使用左连接,但我想获得这个非常sql查询。有可能吗?

感谢

1 个答案:

答案 0 :(得分:0)

我会推荐JOIN。您可能会获得更好的性能,因为子选择通常很难进行数据库优化。用Zend_Db_Select写这个也很容易。或者,新的Zend_Db_Expr可能适用于此。

   $select = $db->select()
   ->from('f', array('f.foo', 'f.bar', new Zend_Db_Expr('SELECT Sum(x) AS `y`
                                                         FROM   z AS pf
                                                         WHERE  pf.q_id = f.id') => 'f'))
   ->where(...);