我有一个像
这样的查询select empl.idemp ,(select em.firstnm from tbl_employeemaster em where em.idemp = empl.approvedby) as approvedby from tbl_empleaveapplication empl
join tbl_employeemaster emp on empl.idemp = emp.idemp
join tbl_leavemaster lvm on empl.idleavemaster = lvm.idleavemaster
我需要使用zend db来构建这种类型的查询
答案 0 :(得分:14)
以下是将字符串查询转换为Zend_Db_Select
的方法class Empleaveapplication extends Zend_Db_Table_Abstract
{
protected $_name = 'tbl_empleaveapplication';
}
$table = new Empleaveapplication();
// create sub query
$subSql = $table->select()
->setIntegrityCheck(false)
->from(array('em' => 'tbl_employeemaster'), array('firstnm'))
->where('idemp = empl.approvedby', '');
// main query
$sql = $table->select()
->setIntegrityCheck(false)
->from(array('empl' => 'tbl_empleaveapplication'), array('idemp', 'approvedby' => new Zend_Db_Expr('(' . $subSql . ')')))
->joinInner(array('emp' => 'tbl_employeemaster'), 'empl.idemp = emp.idemp', array())
->joinInner(array('lvm' => 'tbl_leavemaster'), 'empl.idleavemaster = lvm.idleavemaster', array());