Mysql - Self Join

임수정·2023년 5월 15일
0

위코드 2차 프로젝트 진행시 공부한 내용을 정리하였습니다.

이번 프로젝트를 진행하면서 댓글과 대댓글을 구현해야 하는 부분이 있었습니다.
여기서 대댓글을 어떻게 구현해야 할지 감을 잡지 못하고 있을 때 멘토님께서 self join에 대해서 말씀을 해주셨고 이를 활용하면서 알게 된 부분에 대해서 작성해보려고 합니다!

✅ Self Join

MySQL에서 Self Join은 하나의 테이블 내에서 자기 자신을 조인하는 것을 의미합니다.

이를 구현하기 위해서 저는 ERD를 작성할때 별도의 column을 만들었습니다.

이미지를 보시면 알 수 있듯이 comment_id를 통해 댓글의 id 값을 가지고 와
어떠한 댓글에 대한 대댓글을 작성했는지 알 수 있도록 구현했습니다.

대댓글에 대한 contents를 작성한 후 대댓글에 대한 결과값을 클라이언트에 전달할 때
아래와 같이 sql문을 작성할 수 있습니다.

 const result = await appDataSource.query(
 `SELECT 
  c.post_id AS postId,
  c.comment_id AS replyId,
  u.social_nickname AS nickname,
  u.social_profile_image AS profileImage,
  c.content
  FROM comments AS c
  INNER JOIN users AS u ON u.id=c.user_id
  LEFT JOIN comments AS cm ON c.id=cm.comment_id
  WHERE c.comment_id=?,
  [commentId]
  );
  return result;
};

제가 작성한 쿼리문의 일부를 가지고 왔습니다.

저는 처음에 self join이라고 하는 문법이 별도로 있는 줄 알았습니다.
근데 그것이 아닌 기존에 있는 join문을 활용하여 self join을 활용하는 것이었습니다.
(이를 위해 아까 ERD에서 별도의 column을 만들었던 것입니다!)

아직 백엔드 개발자 초보자라 모르는 것투성인데 이렇게 새로운 걸 배우면 너무 신기하고 재미있습니다!ㅎㅎㅎ

profile
부족함을 인정하고 채워나가는 개발자! (Node.js 개발자)

0개의 댓글