2012-11-05 5 views
0

내가 (PostgreSQL을 통해) DataMapper 클래스 노래가 값. 문제는 사용자가 등급에 따라 사용 가능한 노래를 찾아 보길 원합니다.사용자 정의 순서는 다음과 같은 속성이 그

Song.all(:order => [:rating.desc]) 

는 다음과 같은 순서로 나에게 노래를 얻을 것이다 : 나는 5 곡, 그 중 3과 같이 무언가를 평가 한이 말 {NULL, NULL, 10, 7, 6} 또는 무엇 이건. 이러한 결과를 {10, 7, 6, null, null}과 같이 표시 할 수 있도록이 null 값을 순서의 맨 아래로 가져 오는 간단한 방법이 있습니까?

나는
Song.all(:rating.not => nil, :order => [rating.desc]) + song.all(:rating => nil) 

을 시도했지만이 내 결과 집합이 전무되도록 쿼리를 결합합니다.

물론 다른 대안으로 null 등급을 -1과 같이 기본값으로 지정하는 것이 가능하지만 몇 가지 제한 사항으로 인해 가능하면이 문제를 피할 것입니다.

+0

처럼 될 것인가? MySQL은 다른 어떤 것보다 NULL 값을 덜 고려하고'{10, 7, 6, null, null}'과 같은 순서를 보여줍니다. – ujifgc

+0

@ujifgc Postgres 사용하기 – AlexQueue

답변

2

NULl의 위치를 ​​ORDER BY 절에 지정할 수 있습니다. 이 Sorting Rows을 확인하십시오. 나는 datamapper에서 확실하지 오전하지만 SQL은 당신이 연결 무엇 데이터베이스이

SELECT select_list FROM table_expression ORDER BY sort_expression DESC NULLS LAST

관련 문제