Zend Framework выбрать объект и сложные объединения - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь научиться использовать объект 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

Возможно ли это?И как?Документация не так уж велика.Могу ли я также использовать WHERE x IN (...) с выбранным объектом?

Заранее спасибо!

1 Ответ

2 голосов
/ 16 февраля 2012

Не уверен, но что-то в этом роде:

$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');
...