0

少なくともそれほど複雑でないクエリでは、本当に快適に使用できる select オブジェクトの使用方法を学ぼうとしています。手動の SQL クエリの代わりにこれを使用することに制限はありますか?

アプリケーションのどこでも使用したいのですが、次のようなより複雑なクエリに使用する方法が本当にわかりません。

SELECT yt.rowid, yt.concat, added_latest, yt.volume, (yt.risk*yt.volume)
FROM obsoletes.batches yt
INNER JOIN(
       SELECT rowid, batch, concat, volume as latest_vol, MAX(added) AS added_latest
       FROM obsoletes.batches
       GROUP BY concat) ss 
       ON yt.added = ss.added_latest AND yt.batch = ss.batch
WHERE yt.concat = 'something'
GROUP BY yt.batch

これは可能ですか?そしてどうやって?ドキュメントはそれほど素晴らしいものではありません。select オブジェクトで WHERE x IN ( ... ) も使用できますか?

前もって感謝します!

4

1 に答える 1

2

確かではありませんが、そのようなもの:

$inner = $db->select ()
    ->from ('obsoletes.batches', array (
    'rowid',
    'batch',
    'concat',
    new Zend_Db_Expr ('volume AS latest_vol'),
    new Zend_Db_Expr ('MAX(added) AS added_latest')
))
    ->group ('concat');


$query = $db->select ()
    ->from ('obsoletes.batches', array (
    'rowid',
    'concat',
    'volume',
    new Zend_Db_Expr ('risk*volume')
))
    ->joinInner ($inner, 'yt.added = added_latest AND yt.batch = ss.batch')
    ->where ('concat = ?', 'something')
    ->group ('batch');
于 2012-02-16T09:57:52.183 に答える