私は次の機能を実行しましたが、正常に動作しています。
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;
誰もが良いフィードバックを与えることができますか、役に立ちます。
ありがとう。