2017-12-14 43 views
1

以下のSQLクエリでは、QueryOverでnhibernateを使用してDBテーブルから結果を取得する必要があります。 SQLの要求は次のようになります。nhibernateで大文字小文字を使用してサブクエリを使用する方法

SELECT Id, Name, Address,phone,ispassed 
FROM employee WHERE ispassed = 1 
ORDER BY 
(CASE WHEN id in (select empId from salary where empId in (2,45,65) and Type=5) THEN 0 ELSE 1 END) asc, 
Name desc 

私は次のように発注しています。

query.OrderBy(Projections.Conditional(
      Restrictions.In(Projections.SubQuery(subquery)), 
      Projections.Constant(0), 
      Projections.Constant(1))).Asc(); 

それ:私は、メインクエリでサブクエリを追加していたときに

var subquery = QueryOver.Of<salary>() 
      .Where(x => x.Type == 5 && x.empId.IsIn(2,65,45)) 
      .SelectList(list => list 
.Select(Projections.Distinct(Projections.Property<salary>(x => x.empId)))); 

と:だから、私はのようにサブクエリを持って

ORDER BY 
(CASE WHEN id in (select empId from salary where empId in (2,45,65) 
and Type=5) THEN 0 ELSE 1 END) asc 

ためNHibernateのクエリを構築する例を記入してください「NHibernate.Criterion.Projections.SubQuery(NHibernate.Criterion.DetachedCriteria)」に最適なオーバーロードされたメソッドがいくつかの無効な引数を持っているとエラーを表示しています。

+0

あなたはこれでエラーを取得していますか?あなたの問題は何ですか? –

+0

実際、私はnhibernateで新しく、順序でスタックしています。どのようにサブクエリをケース内で使用するのでしょうか。 .OrderBy(Projections.Conditional( Restrictions.Where (A => a.EmpId.IsIn())、 Projections.Constant(0)、 Projections.Constant(1:?私は以下のように注文のNHibernateのクエリを持っています))))。Asc(​​)。 サブクエリーを代わりに使用したいですか? – jeet

答えて

0

私はそれが何をしたい願っています:

 Employee employeeAlias = null; 
     var subquery = QueryOver.Of<salary>() 
      .Where(x => x.Type == 5 && x.empId.IsIn(2,65,45)) 
      .And(x => x.empId == employeeAlias.Id) 
      .Select(x => x.empId); 

     var query = session.QueryOver(() => alias) 
        .Where(x => x.IsPassed) 
        .OrderBy(Projections.Conditional(
         Subqueries.Exists(subquery.DetachedCriteria), 
         Projections.Constant(0), 
         Projections.Constant(1)) 
         ).Asc 
        .ThenBy(x => x.Name).Desc 
        //.Select 
        //.List 
        ; 
+0

こんにちはローマン、私はあなたの答えの答えで上記の質問を更新しました。ありがとうございます。 – jeet

+0

@jeet私はあなたの変更に応じて私の答えを更新しました –

+0

@Romanを更新していただきありがとうございますが、DetachedCriteriaはサブクエリの後に利用できません。 – jeet

関連する問題