반응형
다음과 같은 쿼리를 사용합니다.
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
반응형
'MySql' 카테고리의 다른 글
MySQL 연결이 끊어 지거나 연결이 끊어진 트랜잭션에서 MySQL 롤백 (0) | 2020.09.18 |
---|---|
MySQL Jdbc 드라이버를 찾을 수 없음 (0) | 2020.09.18 |
MySQLi 준비된 문의 결과를 연관 배열에 어떻게 넣을 수 있습니까? (0) | 2020.09.18 |
MySQL SQL : MySQL에서 기존 열을 기본 키로 설정 (0) | 2020.09.17 |
MySQL 이미지를 데이터베이스에 직접 저장하거나 base64 데이터로 저장합니까? (0) | 2020.09.17 |
댓글