$select->from(array('u'=>'user'),array('count'=>'distinct count(*)'))
->joinLeft(
array('d' => 'details'),
'u.detailsid = d.detailsid',
array());
我有:
SELECT * FROM user
LEFT JOIN details ON
details.detailsid = user.detailsid;
但是count
在哪里适合呢?
答案 0 :(得分:3)
这是专栏。
SELECT DISTINCT count(*) AS count FROM user AS u
LEFT JOIN details AS d ON
d.detailsid = u.detailsid;
请参阅http://framework.zend.com/manual/1.12/en/zend.db.select.html
在from()方法的第二个参数中,您可以指定要从相应表中选择的列。如果未指定列,则默认为“*”,“所有列”的SQL通配符[...]您可以在简单的字符串数组中列出列,或者作为列别名与列名的关联映射。如果您只有一列要查询,并且您不需要指定列别名,则可以将其列为纯字符串而不是数组。
在旁注中,您可以简单地回显查询以查看它将产生的内容(与上面相同的页面):
将选择对象转换为SQL字符串 - 如果需要访问与
Zend_Db_Select
对象对应的SQL查询的字符串表示,请使用__toString()
方法。
答案 1 :(得分:0)
如果您遇到问题,并希望将Zend_Db_Select对象轻松转换为SQL查询,则可以执行以下操作:
echo $select;
在调试方面,这非常方便。
答案 2 :(得分:0)
对于使用计数,您需要使用Zend_Db_Expr
$select->from(array('u'=>'user'),array('count'=> new Zend_Db_Expr("distinct count(*)"))
->joinLeft(
array('d' => 'details'),
'u.detailsid = d.detailsid',
array());
我猜这就是你问的。