본문 바로가기

프로젝트

[서점 프로젝트] 서브 쿼리를 이용한 평점 업데이트

사용자는 책을 구매하고 그에 대한 별점을 남길 수 있습니다.
별점이 남겨질 때마다 책의 평점은 변화합니다.

오늘은 별점의 평균을 구해줄 서브 쿼리에 대해서 이야기해보겠습니다.


🐸 서브 쿼리

간단하게 설명하자면 쿼리 안에 있는 쿼리를 의미합니다.
서브 쿼리는 괄호 안에 넣어서 작성하며
메인 쿼리의 컬럼을 사용할 수 있습니다.

 

🐸 서브 쿼리의 위치

서브 쿼리는 다양한 위치에서 사용할 수 있습니다.
하지만 FROM 절에서 사용할 때는 AS 예약어를 사용해서 별칭을 주어야 합니다.

  • SELECT
  • FROM
  • WHERE
  • HAVING
  • ORDER BY
  • VALUES
  • UPDATE

 

🐸 적용 예시

(좌) book 테이블과 (우) review 테이블

책의 평점을 수정하는 쿼리는 간단합니다.

UPDATE book SET rating = 평점 WHERE id = 1;

이 평점을 우리는 서브 쿼리로 만들 수 있습니다.

SELECT AVG(rating) FROM review WHERE book_id = 1;

만들어진 쿼리를 괄호 안에 넣어서 완성합니다.

UPDATE book
SET rating = (
 SELECT AVG(review.rating)
 FROM review
 WHERE book_id = 1
)
WHERE id = 1;

작성하면서 서브 쿼리의 반복이 많아지면 콜백 지옥처럼 서브 쿼리 지옥이 펼쳐진다고 느꼈습니다.😂

글을 끝까지 봐주셔서 감사합니다.
틀린 내용은 댓글로 지적 부탁드립니다.