2012-10-19 2 views
0

를 나는 내가 해요 순간에은 "선택 ... (선택 ...) ×로에서 ..."얻을 zend_db

SELECT `f`.*,   
     (SELECT Sum(x) AS `y` 
     FROM z AS pf 
     WHERE pf.q_id = f.id) AS w 
FROM f ... 
WHERE ... 
GROUP BY `f`.`id` 

그래서 Zend_Db_Select으로 구축 할 수있는 쿼리를 수동으로 실행하십시오. $db->fetchAll($sql).

어떻게

가 나는 경우 조인 왼쪽으로 어쩌면 일할 수 (선택 ..., ID), 내가

select f.* , (select ...) as `something` from ... 
내가 ->column('f.*, (select...)')를 사용하여 생각

를 얻을 수 있지만 작동하지 않았다 할 그리고 그 ID에 가입하지만, 나는이 아주 SQL 쿼리를 얻고 싶었다. 가능한가?

감사합니다.

답변

0

나는 JOIN을 권하고 싶습니다. 하위 선택은 대개 데이터베이스 최적화에 어려움이 많으므로 성능이 향상 될 수 있습니다. Zend_Db_Select로 이것을 작성하는 것도 쉽습니다. 대안으로 새로운 Zend_Db_Expr이이를 위해 작동 할 수도 있습니다.

$select = $db->select() 
    ->from('f', array('f.foo', 'f.bar', new Zend_Db_Expr('SELECT Sum(x) AS `y` 
                 FROM z AS pf 
                 WHERE pf.q_id = f.id') => 'f')) 
    ->where(...); 
+0

내가 참여한 방법은 zend_db_Expr을 잊어 버렸습니다. – max4ever