무한 대댓글 구현 하기위해 추가한 댓글의 뎁스와 연결된 부모ID에 따라 무한 계층 트리구조로 정렬된 상태로 데이터를 전체 조회해야했다.
원래는 CONNECT BY절을 사용할려구 했지만 MariaDB는 CONNECT BY를 지원하지 않아서같은 동작을 하는 WITH RECURSIVE로 다시 구현 해야했다.
CONNECT BY절의 동작 방식을 이해할때 도움된 트리구조 그림이다.(참고용)
(다른 CONNECT BY 블로그 예시 설명을 예로들어 이해 했음 나의 테이블과는 내용이 다름.)


참조: https://dongdongfather.tistory.com/136
아래 쿼리는 원래 실행 하려던 CONNECT BY절을 이용한 SQL쿼리이다.
-- CONNECT BY절 이용하여 계층형 구조 테이블 구현 하기.
-- 마리아 DB에서는 CONNECT BY절을 지원하지 않음.
SELECT id, parent_id, super_id, user, depth, content
FROM jinhee_simple_board
start with parent_id is null -- 최초 시작행을 정한다. 최상위 부모부터시작 할것이므로
connect by PRIOR id = parent_id -- 이전행의 id와 현재형의 parent_id이 같은행을 가져와라. 뜻임.
order SIBLINGS BY super_id;
-- 계층별로 정렬하기 위해 SIBLINGS명령어 사용하면됨. '형재'라는 뜻으로 형제 레벨끼리 정렬을 해라의 의미 이다.
그리하여 WITH RECURSIVE로 공부후 쿼리 변경하여 실행 시켰다. 원하던 계획 대로 무한 계층형 트리 구조로 잘 출력되어 조회 되었다!!.
WITH RECURSIVE의 동작 방식은 BFS방식으로 동작한다.
CONNECT BY의 동작 방식은 DFS방식으로 동작하는듯 하다.
-- Maria DB에서는 CONNECT BY절을 지원하지 않음.
-- 그래서 WITH RECURSIVE로 변환 해주어야함. 그럼 위 쿼리와 동일한 결과가 나온다.
-- 진희 작성 무한 대댓글 구현 WITH RECURSIVE 쿼리.
WITH RECURSIVE CTE AS (
-- 최상위 부모 찾기 (parent_id가 NULL인 경우)
SELECT id, parent_id, super_id, jinhee_simple_board.user as user, 1 AS depth, content, CAST(id AS CHAR(100)) AS tree_path
FROM jinhee_simple_board
WHERE parent_id IS NULL
UNION ALL
-- 재귀적으로 자식 노드 찾기 (아래 서브쿼리가 재귀로 계속 반복됨.)
SELECT jb.id, jb.parent_id, jb.super_id, jb.user, bt.depth + 1 as depth, jb.content, CONCAT(bt.tree_path, ' -> ', jb.id) AS tree_path
FROM jinhee_simple_board jb
JOIN CTE as bt ON bt.id = jb.parent_id
)
select * from CTE
order by tree_path; -- 마지막에 tree_path기준으로 정렬을 시켜준다!.
-- 이건 마지막 추가한 부모가 맨상단으로 가도록 정렬 쿼리.
order by super_id desc, tree_path;
드디어 몇시간 사투끝에 마침내 구현에 성공했다!!!!.

나이스!!!
아래 화면에서 보이는 UI이다. (요건 오름차순 정렬된 상태)

아래 화면에서 보이는 UI는. (내림차순 정렬된 상태)

아래쿼리는 추가로 이부장님께서 작성한 더 간략한 SQL쿼리이다.(다만 4뎁스 이상부터는 본래 계획대로 잘안될수도 있다고 당부하심.)
-- 이부장님 계획 정렬된 쿼리.
select id, parent_id, super_id, user, depth, content
from jinhee_simple_board jsb
group by jsb.super_id, id
order by super_id desc, depth;