Php MySQL选择(Zend Framework DB选择)
我有以下选择:Php MySQL选择(Zend Framework DB选择),php,mysql,zend-framework,select,Php,Mysql,Zend Framework,Select,我有以下选择: public function fetchFooSum($id) { $db = Zend_Registry::get('dbAdapter'); $select = $db->query("SELECT SUM(prod) FROM `output` WHERE loc_id IN (SELECT loc_id FROM `locations` WHERE location_id = ".$id.");"); re
public function fetchFooSum($id)
{
$db = Zend_Registry::get('dbAdapter');
$select = $db->query("SELECT SUM(prod) FROM `output` WHERE loc_id IN (SELECT loc_id FROM `locations` WHERE location_id = ".$id.");");
return $select->fetchAll();
}
关于这一点,我有两个问题:
SELECT SUM(prod) FROM output WHERE loc_id IN (SELECT loc_id FROM locations WHERE location_id = ".$id.");
或者这不是很理想(我应该用其他方式来做这件事……加入或联合,或者我听说过但不清楚何时使用的事情)任何关于查询或如何在ZF中更好地实现查询的建议都将不胜感激。您的代码还不错
$sum = $db->fetchOne(<<<SQL
SELECT SUM(prod)
FROM `output`
WHERE loc_id IN (
SELECT loc_id
FROM `locations`
WHERE location_id = {$db->quote($id)}
);
SQL
);
$sum=$db->fetchOne(对于此查询,我更喜欢使用内部联接而不是IN运算符,因为我相信它将比当前形式的查询性能更好(但还没有关于原因的参考:)
我强烈建议您阅读包含大量实际示例的文档,而且不会超过一个小时
// example using Zend_Db_Select
$select = $db->select()
->from('output', array('sum(prod)'))
->join('locations', 'output.loc_id = locations.loc_id', array())
->where('locations.location_id = ?', $id);
// to dump query
print_r($select->__toString());
// to execute
$result = $db->fetchOne($select);