프로그래밍/CodeIgniter

[CodeIgniter] 데이터베이스(Database) 쿼리 빌더 - ORDER BY

떨어지는 용 2018. 10. 29. 10:59

▶CodeIgniter 데이터베이스(Database) 쿼리 빌더 - ORDER BY



▶설명


코드이그나이터(CodeIgniter) 쿼리 빌더 5번째 정리입니다.

이번에는 데이터를 정렬할 때 사용하는 ORDER BY 절을 생성하는 쿼리 빌더 함수에 대해 알아보도록 하겠습니다.


쿼리 빌더 클래스에 대한 자세한 내용은 아래의 매뉴얼을 참조하시기 바랍니다.


예제 코드는 제가 자주 사용하는 방식으로 작성했습니다.


▶ORDER BY 함수



$this->db->order_by()

이 함수는 ORDER BY 절을 생성합니다.

사용 방법은 총 2가지가 있습니다.


첫 번째 : 단순 키/값

$this->db
    ->select('name, price')
    ->from('products')
    ->order_by('price', 'ASC');
// 실행 결과 : SELECT `name`, `price` FROM `products` ORDER BY `price` ASC


첫 번째 파라미터는 정렬 기준이 되는 컬럼명입니다.

두 번째 파라미터는 정렬 방향입니다.

전달할 수 있는 값은 아래와 같습니다.

  • ASC : 오름차순
  • DESC : 내림차순
  • RANDOM : 랜덤


해당 함수를 여러 번 호출하여 여러 필드에 대한 정렬을 수행할 수 있습니다.

$this->db
    ->select('name, price')
    ->from('products')
    ->order_by('price', 'ASC')
    ->order_by('name', 'DESC');
// 실행 결과 : SELECT `name`, `price` FROM `products` ORDER BY `price` ASC, `name` DESC


RANDOM을 사용하는 방법은 조금 특별합니다.

첫 번째 파라미터로 숫자 시드 값을 지정하지 않으면, 첫 번째 파라미터의 값이 무시됩니다.


시드 값 설정 : X

$this->db
    ->select('name, price')
    ->from('products')
    ->order_by('price', 'RANDOM');
// 실행 결과 : SELECT `name`, `price` FROM `products` ORDER BY RAND()


시드 값 설정 : O

$this->db
    ->select('name, price')
    ->from('products')
    ->order_by(17, 'RANDOM');
// 실행 결과 : SELECT `name`, `price` FROM `products` ORDER BY RAND(17)


※ RANDOM은 Oracle, MSSQL에서 사용할 수 없습니다. 해당 데이터베이스 사용 시 자동으로 ASC로 설정됩니다.


두 번째 : 사용자 문자열

$this->db
    ->select('name, price')
    ->from('products')
    ->order_by('price ASC, name DESC');
// 실행 결과 : SELECT `name`, `price` FROM `products` ORDER BY `price` ASC, `name` DESC


▶마치며


ORDER BY 절을 생성할 수 있는 쿼리 빌더를 정리했습니다.

쿼리 빌더에 대한 내용이 많기 때문에 다음 글에 추가로 작성하겠습니다.