Sql Zend框架中具有左连接的多个条件
我在使用Zend Framework时遇到了一个问题。基本上,我正在尝试使用左连接在子查询中添加AND运算符。请查看我的代码正在生成的以下查询:Sql Zend框架中具有左连接的多个条件,sql,join,zend-framework,zend-db,Sql,Join,Zend Framework,Zend Db,我在使用Zend Framework时遇到了一个问题。基本上,我正在尝试使用左连接在子查询中添加AND运算符。请查看我的代码正在生成的以下查询: 选择'd`.*,将'deal'中的(状态)计数为'd'左加入'payments'。deal\u id='d`。deal\u id按'd'分组。'deal\u id'按'created\u date'描述订单 代码是: $select = $this->_db->select() ->from(array('d'=
选择'd`.*,将'deal'中的(状态)计数为'd'左加入'payments'。deal\u id='d`。deal\u id按'd'分组。'deal\u id'按'created\u date'描述订单
代码是:
$select = $this->_db->select()
->from(array('d'=>'deal'))
->joinLeftUsing('payments', 'deal_id', array('count(status)'))
->order("created_date $sortOrder")
->group("d.deal_id");
但是,我想在我的子查询中再添加一个条件,即Status=1,请查看我愿意获得的以下输出
SELECT `d`.*, count(status) FROM `deal` AS `d` LEFT JOIN `payments` ON `payments`.deal_id = `d`.deal_id AND status = 1 GROUP BY `d`.`deal_id` ORDER BY `created_date` desc
如果有人对我如何实现同样的目标有想法,请告诉我
谢谢,
Gagz我建议使用joinLeft而不是joinLeftUsing
$select = $this->_db->select()
->from(array('d'=>'deal'))
->joinLeft('payments', 'payments.deal_id = d.deal_id and status = 1',
array('count(status)'))
->order("created_date $sortOrder")
->group("d.deal_id");
给我
SELECT `d`.*, count(status) FROM `deal` AS `d`
LEFT JOIN `payments` ON payments.deal_id = d.deal_id and status = 1
GROUP BY `d`.`deal_id` ORDER BY `created_date ` ASC
我们可以在Zend 3中使用表达式:
$join = new \Zend\Db\Sql\Expression('contractor_jobs.contractor_id = contractor_info.contractor_id AND
contractor_jobs.job_trade_id = '.$variableName.' ');
$select->join(
'contractor_jobs',
$join,
array('job_trade_id'),
$select::JOIN_LEFT
);
它对我有用。您也可以根据您的情况进行检查。谢谢你问这个问题