우선 어제의 질문 url은
저는 sql환경이 마리아sql입니다. 위 질문에 대해서 해결은 해서 정보를 올리고자 합니다.
우선 어제 sql의 문제점은 inner join으로 member 컬럼을 넣을때 순서가 깨지는 현상 이였습니다.
그로인해 해결책은 서브쿼리에 inner join을 해서 순서가 깨진 서브쿼리정보를 order by 해서 그걸 다시
select 시키자 ( 번호를 매기자 ) 였습니다. 그리고 그대로 서브쿼리에 inner join을 넣고 order by 를 해서 순서가 잘 나오는걸 확인했습니다.
그뒤 메인 쿼리로 select 시켰을때 마찬가지로 순서가 깨지는 현상이 일어났습니다. 그래서 3시간끝에 포기를 햇었습니다.
그리고 좀 쉰뒤에 다른 방법으로 했을때 성공 했습니다. 아래가 실패한 쿼리와 성공한 쿼리입니다.
/////////////////////////////////////////////////실패 쿼리 ////////////////////////////////////////////
set @board_number2:=0; set @board_number:=10; select (@board_number:=@board_number-1) board_number ,(@board_number2:=@board_number2+1) board_number2 , TMP.* from ( select afterReview_D.*,memberm_M.memberAccount from afterReview_D inner join memberm_M on memberm_M.memberPK = afterReview_D.memberPK where isnull(afterReview_D.isDel) and afterReview_D.productPK= '000000000004' order by afterReview_D.afterDate desc, afterReview_D.afterPK desc )TMP
////////////////////////////////////////////////// 성공 쿼리 ////////////////////////////////////////
set @board_number2:=0; set @board_number:=10; select TMP2.* , memberm_M.memberAccount,memberm_M.memberPK from ( select (@board_number:=@board_number-1) board_number ,(@board_number2:=@board_number2+1) board_number2 , TMP.* from ( select afterReview_D.* from afterReview_D where isnull(afterReview_D.isDel) and afterReview_D.productPK= Param1 order by afterReview_D.afterDate desc, afterReview_D.afterPK desc )TMP order by TMP.afterDate desc, TMP.afterPK desc )TMP2 inner join memberm_M on memberm_M.memberPK = TMP2.memberPK order by TMP2.afterDate desc, TMP2.afterPK desc;
간단한 설명을 드리자면 실패 원인은 확실히 inner join을 해서 순서가 깨지는거였습니다. 그래서 번호를 매기는 순서를 inner join 전에 order by로 매기고 나서 inner join을 하면 된다. 즉 inner join 후 에러이면 inner join 전에 번호 매기고 나서 inner join을 하면 된다 였습니다.
진짜 어떻게 해야 하나 걱정을 많이 했었는데 편법으로 해결은 했습니다. 많은 조언 주셔서 감사합니다