繁体   English   中英

如何在Zend_Db_Select中创建COUNT AS?

[英]How to make COUNT AS in Zend_Db_Select?

所以我有这个查询:

select u.*, count(mi.media_id) as media_count
from user as u
left join media_items as mi on mi.user_id = u.user_id
where u.is_enabled = 1 and
group by u.user_type
having media_count > 0;

我正在尝试将其转换为Zend_Db_Select。 到目前为止,除了媒体的数量,我拥有一切。 这是我尝试的:

$select->from(array('u' => 'user'), array('*', new Zend_Db_Expr('COUNT(mi.media_id) AS media_count'))
       ->joinLeft('mi' => 'media_items'), 'mi.user_id = u.user_id')
       ->where('u.is_enabled = 1')
       ->group('u.user_type')
       ->having('media_count > 0');

这使我得到错误:

"Mysqli prepare error: Unknown column 'media_count' in 'having clause'"

如何以Zend方式创建此语句?

另外,我输出了由此创建的查询,并在MySQLWorkBench上运行了该查询,它运行得很好。

编辑我刚刚尝试过:

->columns('media_count' => new Zend_Db_Expr('COUNT(mi.media_id)'))

同样的错误。

这应该正常工作:

$select->from(array('u' => 'user'), array('*', 'media_count' => 'count(mi.media_id)'))
   ->joinLeft('mi' => 'media_items'), 'mi.user_id = u.user_id')
   ->where('u.is_enabled = 1')
   ->group('u.user_type')
   ->having('media_count > 0');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM