티스토리 뷰
Join에 관해 학습하던 도중,
조인의 다양한 종류 중 Self Join을 마주하게 되었습니다👀
같은 테이블끼리 조인한다는 점에서
어떤 상황에서 유용하게 사용되는지 찾아보았습니다.
부모 자식 관계가 존재하는 경우
한 테이블 내에서 부모 자식과 같이, 상하 관계가 명시되어 있는 경우 Self Join이 유용하게 사용될 수 있습니다
예를 들면, 게시글에 대한 "댓글과 대댓글"의 관계를 떠올릴 수 있습니다.
게시글에 대한 댓글 내용을 저장하는 테이블 comment
CREATE TABLE comment (
id INT PRIMARY KEY, -- 댓글 고유 ID
content VARCHAR(255), -- 댓글 내용
parent_comment_id INT, -- 부모 댓글이 있는 경우, 부모 댓글 ID
user_id INT, -- 댓글 작성자 ID
article_id INT, -- 게시글 ID
);
아래 어플 사진에 대해, 데이터는 아래와 같이 저장이 됩니다.
이 때, 부모 댓글과 그에 대한 자식 댓글을 검색할 때, SELF JOIN을 사용하면 편리합니다👍
같은 테이블끼리 조인하므로, 각각 parent와 reply라는 이름을 지정한 후,
parent의 id와 reply의 parent_comment_id가 같은 경우에 대해 조인을 진행합니다.
SELECT
parent.id AS parent_comment_id,
parent.content AS parent_comment_content,
reply.id AS reply_comment_id,
reply.content AS reply_comment_content
FROM comment AS parent
JOIN comment AS reply ON parent.id = reply.parent_comment_id;
정리하면
각 행의 데이터들이 서로 연관이 있는 경우, SELF JOIN을 유용하게 사용할 수 있습니다!
처음 SELF JOIN을 접했을 때는, 자주 사용되긴 할까? 싶었는데, 해당 개념이 존재하는 이유가 있었습니다.
인스타그램, 페이스북과 같은 SNS 친구 관계에서, 자신과 연결된 친구를 찾기 위해 유용하게 사용될 수 있다고 하니, 알아두고 프로젝트 할 때, 적용해보면 좋을 것 같습니다😀
'백엔드 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] Explain SQL, Index (0) | 2023.10.06 |
---|---|
[데이터베이스] 다양한 JOIN (0) | 2023.10.05 |