bestsource

Objection.js의 추가 조인 조건

bestsource 2023. 10. 1. 21:06
반응형

Objection.js의 추가 조인 조건

Objection.js Node.js ORM을 사용하여 다음과 같은 쿼리를 작성합니다.

return Account.query()
    .alias('accounts')
    .whereIn('accounts.ID', accountIds)
    .where('accounts.DELETE_FLAG', 'N')
    .where('accounts.ISDELETED', false)
    .withGraphJoined('contacts')
    .where('contacts.DELETE_FLAG', 'N')
    .where('contacts.ISDELETED', false)
    .execute();

현재 다음과 같은 쿼리를 생성하고 있습니다.

select accounts.*, contacts.* from accounts
left join contacts on (accounts.ID = contacts.ACCOUNTID)
where accounts.ID in (...)
    and contacts.DELETE_FLAG = 'N'
    and contacts.ISDELETED = false

둘대신에contactsnormal where 절의 일부로 쿼리에 추가되는 조건, 다음과 같이 조인 조건에 추가해야 합니다.

select accounts.*, contacts.* from accounts
left join contacts on (accounts.ID = contacts.ACCOUNTID)
    and (contacts.DELETE_FLAG = 'N')
    and (contacts.ISDELETED = false)
where accounts.ID in (...) 

문서에서 이 방법을 찾는 데 어려움을 겪고 있습니다.제안해 주실 분 계신가요?

사용가능modifyGraph, 쿼리는 왼쪽 조인에 필터를 추가하지 않고 하위 선택을 조인으로 사용한다는 점에서 약간 다릅니다.그럼에도 불구하고 결과는 그래프 기능을 유지하는 이점과 함께 필터링하는 것과 동일합니다.

return Account.query()
.alias('accounts')
.whereIn('accounts.ID', accountIds)
.where('accounts.DELETE_FLAG', 'N')
.where('accounts.ISDELETED', false)
.withGraphJoined('contacts')
.modifyGraph('contacts', , builder => {
    builder.where('DELETE_FLAG', 'N')
           .where('ISDELETED', false)
 )

.execute();

언급URL : https://stackoverflow.com/questions/69126326/additional-join-condition-in-objection-js

반응형