我做了以下功能,它工作正常。
public function getLatestCurrencyRates(){
$sql = new Sql($this->adapter);
$subselect2 = $sql->select();
$subselect2->from(array('r1' =>'currency_rates'))
->columns(array('max_c_rate_id' => new Expression('MAX(c_rate_id)')))
->group("currency_id");
$statement = $sql->prepareStatementForSqlObject($subselect2);
$result = $statement->execute();
$rows = array_values(iterator_to_array($result));
return $rows;
}
我将使用同一张表加入上面的 select 语句。谁能建议如何做到这一点?我目前的实现如下。其实还没有完成。因为缺乏实施它的知识。
public function getLatestCurrencyRates(){
$sql = new Sql($this->adapter);
$subselect2 = $sql->select();
$subselect2->from(array('r1' =>'currency_rates'))
->columns(array('max_c_rate_id' => new Expression('MAX(c_rate_id)')))
->group("currency_id");
$subselect3 = $sql->select();
$subselect3->from("currency_rates")
->join(array('r2'=>$subselect2), 'r2.max_c_rate_id = currency_rates.c_rate_id', array('c_rate_id', 'currency_id', 'buy_rate', 'sell_rate'));
$statement = $sql->prepareStatementForSqlObject($subselect3);
$result = $statement->execute();
$rows = array_values(iterator_to_array($result));
return $rows;
}
我将在这里实现的 SQL 查询如下。
select r1.c_rate_id, r2.currency_id, r2.buy_rate, r2.sell_rate
from
(select max(c_rate_id)as c_rate_id from currency_rates group by currency_id) as r1
inner join
currency_rates as r2
on
r1.c_rate_id = r2.c_rate_id;
任何人都可以提供良好的反馈,会有所帮助。
谢谢。