게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
안녕하세요 sql 질문이 풀려서 글을 올립니다.
게시물ID : programmer_12602짧은주소 복사하기
작성자 : 문식이당
추천 : 1
조회수 : 286회
댓글수 : 2개
등록시간 : 2015/08/07 08:57:56
옵션
  • 본인삭제금지
우선 어제의 질문 url은
http://www.todayhumor.co.kr/board/view.php?table=programmer&no=12593&s_no=12593&page=1  입니다.

저는 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을 하면 된다 였습니다. 
진짜 어떻게 해야 하나 걱정을 많이 했었는데 편법으로 해결은 했습니다. 많은 조언 주셔서 감사합니다
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호