2012-06-28 91 views
1

你好我试图找出如何写这样的事情在jooqJOOQ嵌套条件

select * from table 
where ((a = query or b = query or a = query) 
and (e = query or g = query or z = query)) 

我无法弄清楚如何嵌套条件jooq。请帮忙。

回答

4

你需要了解API的以下部分:

public interface Condition { 
    Condition and(Condition other); 
    Condition or(Condition other); 
} 

因此,任何Condition可以与其他使用Conditionsand()/or()方法(等)进行连接。你的情况,你可以很容易形成你的情况是这样的:

Condition c1 = a.equal(query); 
Condition c2 = b.equal(query); 
Condition c3 = a.equal(query); 

Condition d1 = e.equal(query); 
Condition d2 = g.equal(query); 
Condition d3 = z.equal(query); 

现在,这些条件可以被连接成这样:

c1.or(c2).or(c3).and(d1.or(d2).or(d3)); 

或者放在一个SQL语句:

create.select() 
     .from(table) 
     .where(c1.or(c2).or(c3) 
     .and(d1.or(d2).or(d3))); 

当然,您不必将您的c[1-3], d[1-3]条件分配给变量。你可以内嵌一切一条语句:

create.select() 
     .from(table) 
     .where(a.equal(query).or(b.equal(query)).or(a.equal(query)) 
     .and(e.equal(query).or(g.equal(query)).or(z.equal(query))); 

你会发现手册中的详细信息:

http://www.jooq.org/doc/3.0/manual/sql-building/conditional-expressions/