Я не уверен, является ли SqlBuilder определенной библиотекой, потому что есть несколько библиотек, которые имеют класс SqlBuilder
(например, MyBatis ), и есть другие библиотеки, которые являются построители SQL (например, jOOQ ).Итак, я просто собираюсь ответить на этот вопрос для jOOQ (я работаю на поставщика).
Использование jOOQ
Ваш запрос может быть написан таким образом, если вы используете генератор кода:
// Aliasing is not necessary in your case, but here it is, still:
Offices t1 = OFFICES.as("t1");
Employees t0 = EMPLOYEES.as("t0");
Customers t2 = CUSTOMERS.as("t2");
Result<?> result =
ctx.select()
.from(t1)
.join(t0).on(t1.OFFICECODE.eq(t0.OFFICECODE))
.join(t2).on(t0.EMPLOYEENUMBER.eq(t2.SALESREPEMPLOYEENUMBER)
.or(t0.FIRSTNAME.eq(t2.CONTACTFIRSTNAME)))
.where(t2.CREDITLIMIT.gt(70000))
.and(t2.CREDITLIMIT.lt(100000))
.or(t0.OFFICECODE.eq(6))
.orderBy(t0.FIRSTNAME)
.fetch();
Использование какого-либо другого конкретного SqlBuilder
Если ваш определенный SqlBuilder не может обработать тип написанного вами предиката, возможно, вы можете переписать его таким образом:
WHERE (t2.creditLimit BETWEEN 70001 AND 99999) OR (t0.officeCode = 6)