2016-09-03 1 views
2

나는 Drupal 7 사이트를 가지고 있습니다. 나는 Drupal의 dbApi을 사용하고있다. 이제 레코드를 주문해야하는 쿼리가 생겼습니다.Drupal의 DB API 절에 따라 Else가 주문 된 경우

테이블 구조 : -

  • ALBUMID
  • 앨범 이름
  • 앨범 작성 날짜
  • 앨범 출시 날짜

Album Release Date가 정렬 후하지 NULL의 경우 이제 내 요구 사항입니다 그렇지 않으면 정렬을 위해 Album Created Date을 사용하십시오.

$query = db_select('node', 'n'); 
$query->condition('n.type', 'albums', '=') 
     ->condition('status', 1) //Published. 
     ->fields('n', array('nid')) 
     ->orderBy('field_album_release_date_value', 'DESC') 
     ->execute(); 
$result = $query->execute(); 

도움이 되었습니까?

+0

db_query ("{조건이있는 사용자 쿼리]")에서만 가능합니다. –

답변

0

예 가능합니다. addExpresion ($ expression)을 사용해야합니다.

$query = db_select('node', 'n'); 
$query->condition('n.type', 'albums', '=') 
    ->condition('status', 1) //Published. 
    ->fields('n', array('nid')); 
$query->addExpression('IF(n.field_album_release_date_value is null,' 
    . 'n.field_album_release_date_value, n.field_album_create_date_value)' 
    . ' as available_date'); 
$query->orderBy('available_date', 'DESC'); 
$result = $query->execute(); 
당신이 그것을 조정할해야 할 수도 있으므로

는이 테스트하지 못했지만, 사실은 당신이 분 최대와 같은 경우 또는 귀하의 경우 SQL 기능을 삽입 할 addExpression를 사용할 수 있습니다.