유저 상세정보 페이지를 조회하는 API를 만들기 위해 쿼리문을 작성했다.
(내가 작성한 쿼리문)
SELECT DISTINCT email,
tu.created_at,
last_login,
current_email_sent_number,
current_webpage_view,
(SELECT Sum(total_amount)
FROM tbl_payment_history
WHERE status = 'true'
AND user_id = '58125390-edbd-11eb-8694-4153cf39c46d') AS
total_amount
FROM tbl_user AS tu
LEFT JOIN tbl_payment_history AS tph
ON tu.id = tph.user_id
WHERE tph.status = 'true'
AND tph.user_id = '58125390-edbd-11eb-8694-4153cf39c46d'
(팀원분이 작성한 쿼리문)
SELECT id,
email,
created_at,
last_login,
current_email_sent_number,
current_webpage_view,
pht.total
FROM tbl_user AS tu
LEFT JOIN (SELECT user_id uid,
Sum(total_amount) AS total
FROM tbl_payment_history
WHERE status = true
GROUP BY uid) AS pht
ON pht.uid = tu.id
WHERE pht.total IS NOT NULL
SELECT
user_id,
SUM(total_amount)
FROM tbl_payment_history
WHERE status='true'
GROUP BY user_id
먼저 where절 조건(status='true')과 GROUP BY를 이용해 합연산(total)을 마친 user라는 조건에서 email과 계정생성날짜, 로그아웃 시간, email 보낸 횟수 등 여러 속성을 불러와야한다고 생각했었다.
하지만 팀원분이 코드를 짜실때 깨달았던 한가지는 먼저 필요한 데이터와 불필요한 데이터까지 포함된 모든 데이터를 불러온 다음, 조건을 통해 제외시키는 방법도 있다는 것을 알았다.