2017-02-14 8 views
2

Я хочу построить и выполнить запрос, подобный этому, с помощью jOOQ.Как создать SELECT EXISTS (подзапрос) с помощью jOOQ?

SELECT EXISTS(subquery) 

Для Exemple:

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

Как я могу это сделать? Это можно сделать?

+0

Другой случай, когда пользователь знает, как писать SQL, но стороннее программное обеспечение мешает? –

ответ

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 - наиболее удобный подход к тому, что вы хотите делать. Более общий подход заключается в использовании:

create.select(field(exists(...))) 

Где вы обернуть Condition (созданный DSL.exists(Select)) в Field с помощью DSL.field(Condition).

С точки зрения jOOQ 3,9, Field<Boolean> и Condition - это не те же самые типы. Это может измениться в будущем с #3867.

Смежные вопросы