0

Zend_Db_Selectでは作成できないクエリがあります

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`  

そのため、現時点では手動で実行してい$db->fetchAll($sql)ます。

どうすれば入手できますか

select f.* , (select ...) as `something` from ...

使ってみようと思って->column('f.*, (select...)')いたのですが、うまくいきませんでした。

左結合(...、idを選択)してからそのIDで結合すると、おそらく機能する可能性がありますが、この非常にSQLクエリを取得したかったのです。出来ますか?

ありがとう

4

1 に答える 1

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(...);
于 2012-10-19T16:32:55.400 に答える