2016-09-03 9 views
2

私はDrupal 7サイトを持っています。私はdbApiのDrupalを使用しています。今私はレコードを注文する必要があるクエリを持っています。他の場合DrupalのDB APIの句で順番に

テーブルの構造: - Album Release Dateはその後、並べ替えNULLでない場合

  • ALBUMID
  • アルバム名
  • アルバム作成日
  • アルバムリリース日

は今、私の要件がありますソートには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を使用することができます。