본문 바로가기
MySql

MySQL Yii : CDbCriteria를 사용하여 GROUP BY 전에 ORDER BY하는 방법은 무엇입니까?

by 베이스 공부 2020. 9. 18.
반응형

다음과 같은 쿼리를 사용합니다.

SELECT * FROM (
    SELECT * FROM message ORDER BY added_on DESC
) as m WHERE receiver_id = 2 GROUP BY sender_id ORDER BY priority_id DESC;

findAllBySql 을 사용하는 방법을 알고 있습니다.

$this->findAllBySql(
    'SELECT * FROM (
        SELECT * FROM message ORDER BY added_on DESC
     ) as m WHERE receiver_id = :receiverId 
     GROUP BY sender_id 
     ORDER BY priority_id DESC', 
     array('receiverId' => $userId));


$criteria = new CDbCriteria();
$criteria->condition = 'receiver_id = :receiverId';
$criteria->group = 'sender_id';
$criteria->order = 'priority_id DESC, added_on DESC';
$criteria->params = array('receiverId' => $userId);

감사.

 

해결 방법

 

상당히 복잡한 SQL 쿼리가있는 경우 Active Record에 작성하는 대신 SQL에 유지하는 것이 가장 좋습니다. 예, 데이터베이스 이식성을 제한하지만 아마도 이러한 쿼리가 많지 않을 것이며 더 간단하고 유지 관리가 쉬운 코드가 항상 승리합니다.

 

참조 페이지 https://stackoverflow.com/questions/9939275

 

 

반응형

댓글