2013-10-30 8 views
0

젠드 프레임 워크의 초급자로서 저는 SQL 쿼리를 작성하는 데 도움이 필요합니다. 이 내 쿼리입니다 :젠드에서 SQL 쿼리 작성

SELECT 
    COUNT(*) AS Ouvert , SUBSTRING_INDEX(emails.email_value, '@', -1) AS FAI, track_open.open_date 
    FROM emails, track_open 
    WHERE emails.email_id = track_open.email_id 
    AND DATE(open_date) = CURDATE() 
    GROUP BY SUBSTRING_INDEX(emails.email_value, '@', -1) 

그리고 내가 가진이 제 기능을 쓰기 :

public function getOpen() 
{ 
    $query = $this->select() 
        ->setIntegrityCheck(false) 
        ->from(array('e' => 'emails')) 
        ->join(array('to' => 'track_open'), 'e.email_id = to.email_id') 
       ?????????? 

    $result = $this->fetchAll($query); 

    if($result) 
    { 
     return $result->toArray(); 
    } 

    return false; 
} 

사람이 내가 방법을 알고하지 않기 때문에,이 쿼리를 작성하는 예를 들어 줄 수 있도록하는 경우 그것을 완료하십시오. 내가 Zend_Db와 함께 일했는데 정말 코드를 테스트하지 못할 이후

답변

1

그것은 오랜 시간이있다,하지만 당신은 다음과 같은 시도 할 수 있습니다 :

$query = $this->select() 
       ->setIntegrityCheck(false) 
       ->from(array('e' => 'emails'), array(
        'Ouvert' => new Zend_Db_Expr('COUNT(*)'), 
        'FAI' => new Zend_Db_Expr("SUBSTRING_INDEX(emails.email_value, '@', -1)"), 
        'track_open.open_date', 
      )) 
       ->join(array('to' => 'track_open'), 'e.email_id = to.email_id') 
       ->where('emails.email_id = track_open.email_id') 
       ->where('DATE(open_date) = CURDATE()') 
       ->group(new Zend_Db_Expr("SUBSTRING_INDEX(emails.email_value, '@', -1)"))