다음 함수를 수행했는데 정상적으로 작동합니다.하나의 결과 집합을 다른 테이블에 결합하십시오. zf2
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;
}
위의 선택 진술과 같은 테이블을 사용하려고합니다. 누구든지 그 방법을 제안 할 수 있습니까? 내 현재 구현은 다음과 같습니다. 사실 그것은 완료되지 않았습니다. 지식의 부족 때문에 그것을 구현합니다.
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;
아무도 좋은 의견을 제공 할 수 있습니까?
감사합니다.
나는 그것이 하위 쿼리를 지원한다고 생각한다. 이 예제 (https://github.com/ralphschindler/Zend_Db-Examples/blob/master/example-20.php)에는이를 수행하는 방법이 나와 있습니다. 하지만 질문은 결과 집합과 동일한 테이블을 다시 조인하는 방법이었습니다. 내 질문에 SQL 문을 편집했습니다. Pls에는 모양이 있습니다 .. – cha
왜냐하면'$ select-> where'에서 사용하기 때문에 제가 작성한 것처럼 – pozs
미안합니다. 그러나 지금 나는 그것을했다. 답장을 보내 주셔서 감사합니다. 당신이 괜찮 으면, pls 좀 더 자세히 설명 할 수 있습니까? – cha