반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- 소켓
- dp
- BFS
- Crawling
- Node.js
- javascript
- 알고리즘
- TCP
- 수학
- 문자열
- socket
- 가천대
- 그래프
- typescript
- 타입스크립트
- HTTP 완벽 가이드
- Nestjs
- HTTP
- 쉬운 문제
- 타입 챌린지
- type challenge
- 프로그래머스
- Algorithm
- dfs
- 레벨 1
- 프로그래머스 레벨 2
- 크롤링
- ip
- 자바스크립트
Archives
- Today
- Total
kakasoo
4. WHERE과 subQuery, COUNT를 조건으로 걸기 본문
반응형
const users = await this
.createQueryBuilder('user')
.withDeleted()
.where('user.id = :userId', { userId })
.andWhere((qb) => {
// 지금까지 결제한 횟수를 알기 위해 OrderInfo 라는 Entity를 카운트한다.
const subQuery = qb
.subQuery()
.select('COUNT(*)')
.from(OrderInfoEntity, 'oi')
.where('oi.userId = :userId', { userId })
.getQuery();
return `${subQuery} <= 2`;
})
.getMany();
where문에는 파라미터로 문자열을 받을 수도 있지만, 서브쿼리를 파라미터로 하는 함수를 받을 수도 있다.
이 때 내부 파라미터로 받은 함수는 다시 문자열을 반환해야 한다.
문자열이든, 문자열을 반환하는 함수든, 결국 그 문자열은 조건을 의미해야 하며,
서브쿼리를 받을 경우 위 코드와 같이 subQuery()
로 시작해서 getQuery()
로 끝나는 서브 쿼리문을 쓴다.
이 서브 쿼리를 이용해서 위와 같이, 특정 숫자보다 작은 경우를 잡을 수도 있다.
select, addSelect의 경우에는 subQuery()도 없고 문자열이 아니라 SelectQueryBuilder를 리턴해야 한다.
하지만 where ,andWhere은 문자열을 받기 때문에 subQuery(), getQuery()를 가지는 게 차이점이다.
반응형
'프로그래밍 > TypeORM' 카테고리의 다른 글
3. Repository find 메서드 완벽 정리 (0) | 2023.01.07 |
---|---|
[TypeORM] 2. ManyToMany, 다대다 관계의 표현 (0) | 2023.01.04 |
[TypeORM] 1. Column과 Entity, 일대 다 관계의 표현 (0) | 2023.01.02 |
쿼리빌더 최대한 없애기 / deletedAt을 잘 이용하기 (0) | 2022.06.07 |