0

この SQL の休止状態の条件を記述する必要があります。

select distinct USER_ID from USER_ROLE  
where USER_TERM_DT is null 
and ((ROLE_ID in (101,102) 
and STATE_ID in ('MD')) or ROLE_ID = 150)

role_idには値の組み合わせ (101、102、150、151) があります。OR 部分は、Role_Id が 150 または 151 の場合にのみ必要です。

USER_ROLEテーブルにはRole_idstate_idがあります。ロール 101 と 102 のみが state_ids に関連付けられています。

4 つの role_id 値がすべて存在する場合、SQL は次のようになります。

select distinct USER_ID from USER_ROLE  
where USER_TERM_DT is null 
and ((ROLE_ID in (101,102) 
and STATE_ID in ('MD')) or ROLE_ID in (150,151))

この問題で助けてください。結合と分離を一緒に使用する必要があると読んでいますが、正しいコードを思いつくことができません。それが明確で、私のSQLが正しいことを願っています。

4

1 に答える 1

4

このようなものが機能するはずです-「is null」および「in」式を対応する制限に置き換えます

criteria.conjuction()
        .add(USER_TERM_DT is null )
        .add(criteria.disjuction().
                 add(
                   criteria.conjuction()
                            .add(ROLE_ID in (101,102) )
                            .add(STATE_ID in ('MD'))
                 )
                 .add(ROLE_ID in (150,151))
         )
于 2012-07-17T16:50:14.480 に答える