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

2023. 7. 11. 21:56카테고리 없음

반응형

설명


코드이그나이터(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

 

반응형