2014-01-29 2 views
0

3 개의 테이블에서 일부 열을 선택하고 싶습니다. 이 ORDER BY NULLSFIRST에 문제가 있습니다. 그 시간은 2 시간이고 아직로드 중입니다. 내 스크립트가 잘못되었거나 내가 추가해야 할 필요가 있다고 생각합니다. 이건 내 스크립트이며 ..ORDER BY NULLSFIRST

SELECT (CASE WHEN a.column1 IS NULL 
      THEN 'ACTIVE' 
      ELSE 'INACTIVE' 
      END) as STATUS_DEF, <<some columns>>, 

     (CASE WHEN b.column1 IS NULL 
      THEN 'Active' 
      ELSE) as STATUS_fnd_user, <<some columns>>, 

         c.column1||','||c.column2||','||c.column3 

FROM table1 a, table2 b, table3 c 

을 실행 그리고 내가 NULLS FIRST에 의해 ORDER를 사용하는 이유 활동 우선하여 그들을 주문하고 싶다. 나는 이것을 시도했다 ..

ORDER BY a.column1, b.column1 NULLS FIRST; 

다른 생각?

+2

를 사용하면, 같은 활성 NULL 열 상태를 변경하기 때문에 왜 당신은 할 수 없습니다 질문에서 STATUS_DEF, STATUS_fnd_user로 주문을 시도하고 확인하십시오 ... – arunb2w

+6

세 테이블을 결합하지 않으므로이 세 테이블 사이에 직교 곱을 만듭니다. 결과 행의 수는 ((table1의 행) * (table2의 행) * (table3의 행)입니다. - 직접 계산할 수 있습니다. 그렇기 때문에 ** 명시 적 ** 조인 ('join table2b on ... join table3c on ...')을 사용하는 것이 더 좋습니다. 조인 조건을 추가하는 것을 잊지 마십시오. –

+1

@a_horse_with_no_name ** 명시 적 ** 조인을 사용했습니다! 고맙습니다! –

답변

2

덕분에 a_horse_with_no_name에 :) 활동

... 비활성

FROM table1 a JOIN table2 b ON a.column1 IS NULL JOIN table3 c ON b.column1 IS NULL 

...

FROM table1 a JOIN table2 b ON a.column1 = a.column1 JOIN table3 c ON b.column1 = b.column1