2011-12-19 3 views
3

Zend Framework를 사용하는 동안 문제가 발생합니다. 기본적으로 왼쪽 조인을 사용하여 하위 쿼리에서 AND 연산자를 추가하려고합니다. Zend Framework에서 왼쪽 결합을 사용하는 다중 조건

d을 선택 내 코드를 생산하고 다음 qyery를 참조하시기 바랍니다. *, 좌 d에 의해 payments .deal_id = d .deal_id 그룹을 payments 가입 d AS deal FROM (상태)를 계산합니다. created_date

내림차순 코드에 의해 deal_id 순서는 다음과 같습니다

$select = $this->_db->select() 
     ->from(array('d'=>'deal'))      
     ->joinLeftUsing('payments', 'deal_id', array('count(status)')) 
     ->order("created_date $sortOrder") 
     ->group("d.deal_id"); 

그러나, 내 하위 쿼리에서 또 하나 개의 조건을 추가 할 즉, 상태 = 1, 내가 얻을 기꺼이 다음과 같은 출력을 참조하십시오.

d를 선택한다. * BY paymentsdd .deal_id .deal_id = 상태 = 1 ON GROUP payments 가입 ddeal FROM (스테이터스)를 계산. deal_id ORDER BY created_date 내림차순

누군가 내가 동일한 것을 얻을 수있는 방법에 대한 아이디어가 있다면 알려주십시오.

감사합니다, Gagz

답변

4

내가 대신 joinLeftUsing의 joinLeft를 사용하는 것이 좋습니다 것

$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 
을 제공합니다
관련 문제