취업가능할까01
102
2021-09-08 13:15:25 작성 2021-09-08 13:15:50 수정됨
6
162

답변하기(댓글) 관련 DB정렬


1171번에 대한 채팅에 답변을 쓰면 1171번의 custom_u값이 parent_u에 박히는데요

저 ip93ab8lib값을 토대로 1176row를 1171 row 아래에다가 정렬하려면 어떻게해야할까요?


기존에는 parent_u에 기존 u값을 박아서 order by case when parent_u >0 then parent_u else u end 로 

정렬했는데


프론트딴 로직이 바껴서 U값을 parent_u에 넣을수없습니다. ㅠㅠ

0
  • 답변 6

  • Dierslair
    5k
    2021-09-08 13:20:00

    조인하셔서 서브 콜렉션에 넣고 뿌릴 때 콜렉션 참조해서 뿌려주세요. 쿼리로 자식 row를 아래에 정렬하는 건 가능하긴 한데, 복잡해지고 유지보수성이 떨어져요.

  • 취업가능할까01
    102
    2021-09-08 13:38:40

    Dierslair 셀프조인하시라는 얘기이신건가요?! 

  • 취업가능할까01
    102
    2021-09-08 14:02:43 작성 2021-09-08 14:12:27 수정됨

    Dierslair

    SELECT * FROM in_chat_all a LEFT JOIN in_chat_all b ON a.u=b.u ORDER BY case when a.parent_u=b.custom_u then a.parent_u ELSE a.u end


    했는데 잘안되네요 으음..
    그리고 이게 댓글이라기보단 그냥 소켓채팅구현중 처음 로드시에만 뿌려주면되는거라 유지보수할게없습ㄴ디ㅏ! 
  • plwtcs
    911
    2021-09-08 15:54:41

    WITH RECU AS

    (

    SELECT

    U AS PU 

    ,P AS PP

    ,M AS PM

    ,C AS PC

    ,ROW_NUMBER() OVER (ORDER BY U) AS LV

    FROM TEST2 P WITH(NOLOCK)

    WHERE P = ''

    UNION ALL

    SELECT

    U AS CU

    ,P AS CP

    ,M AS CM

    ,C AS CC

    ,R.LV

    FROM TEST2 C WITH(NOLOCK)

    JOIN RECU R

    ON C.P = R.PC

    AND C.C = ''

    AND C.M <> R.PM

    )

    SELECT * 

    FROM RECU

    ORDER BY LV,PU



    MSSQL이고 재귀 쿼리로 가능할듯 합니다

  • 마린_7
    351
    2021-09-08 16:34:02

    parent_u에 값을 넣지 못한다면 릴레이션을 찾을수 없는거 아닌가요?

    불가능합니다.

  • 취업가능할까01
    102
    2021-09-15 14:56:39

    마린_7 안녕하세요, 우선 감사드립니다~  아래의 쿼리로 해결하였습니다

    SELECT a.*
    FROM in_chat_all a
    LEFT OUTER JOIN in_chat_all b
    ON a.parent_u = b.custom_u
    AND a.room_id = b.room_id
    where a.room_id = '{$roomid}'
    ORDER BY IFNULL(b.u, a.u), a.parent_u
  • 로그인을 하시면 답변을 등록할 수 있습니다.