2016-05-31 3 views
0

は、私のようなクエリている:私は休止状態で条件を使用して内部クエリを作成する方法は?

SELECT * 
FROM mars_india.leave_x_user 
WHERE user_id in (SELECT user_id FROM mars_india.user where vendor_id=16); 

stackoverflowのから、次の解決策を得たが、それを理解することができない:

criteria =criteria.createCriteria(user.USER_DOMAINS) 
    .add(Restrictions.eq(UserDomain.DOMAIN, domain)); 

答えて

0

うーん... まず、あなたはいけないことを理解する必要があります同じ情報を取得するためにサブクエリを使用する必要があります。

は、この文字列で検索してください:

SELECT lxu.* FROM mars_india.leave_x_user lxu 
LEFT JOIN mars_india.user miu 
ON lxu.user_id = miu.user_id 
WHERE miu.vendor_id=16 

それはあなたのクエリと同じ結果が得られるはずです。

JOINステートメントは魔法です。 簡単な言葉で言えば、2つのテーブルが1つのテーブルとして動作します。 これで、この結合されたテーブルをvendor_idで照会し、結合されたテーブルの一部だけを "leave_x_user"テーブルに似た結果として返すことができます。

同じデータを取得するために1つの制限付きのクエリが1つだけ必要です。

これは、この基準クエリを使用して基本的に行っていることです。

基準クエリの構文を学ぶために、ここで見てみましょう: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html

あなたはより具体的な情報は、あなたのドメインモデル(テーブルにマップされたクラス)を投稿してくださいしたい場合。

ハッピーコーディング! :D

+0

ありがとうございました.... –

関連する問題