2017-02-14 8 views
2

jOOQでこのようなクエリをビルドして実行したいと思います。 exempleについてはjOOQでSELECT EXISTS(サブクエリ)を作成するにはどうすればよいですか?

SELECT EXISTS(subquery) 

SELECT EXISTS(SELECT 1 FROM icona_etiqueta WHERE pvp IS NULL AND unitat_venda = 'GRAMS') 

私はそれをどのように行うことができますか?それはできますか?

+0

SQLを書く方法を知っているユーザーのもう1つのケースですが、サードパーティ製のソフトウェアが途中で取得できますか? –

答えて

1

見つけました。私はselectExistsメソッドを探していて、DSL.exists()述語コンストラクタで混乱しました。

さらに便利ですfetchExists(subquery)です。

私の具体的な例は次のように解決されます。直接ブール値を返します

create.fetchExists(
     create.selectOne() 
       .from(ICONA_ETIQUETA) 
       .where(ICONA_ETIQUETA.PVP.isNull(), 
        ICONA_ETIQUETA.UNITAT_VENDA.eq('GRAMS')) 
    ); 

を。

3

Your own solutionは、あなたがしたいことに最も便利なアプローチです。より一般的なアプローチは、使用することです:

あなたが DSL.field(Condition)を使用して Field中( DSL.exists(Select)によって作成された) Conditionをラップ
create.select(field(exists(...))) 

jOOQ 3.9以降、Field<Boolean>およびConditionは同じタイプではありません。これは将来、#3867で変更される可能性があります。

関連する問題