sql join 질문...

sql join 질문...

QA

sql join 질문...

본문


        select a.mb_id, b.mb_id, count(*) as cnt , sum(a.wr_31) as tot
          from g5_write_cscenter a
                   inner  join g5_write_csorder b on a.mb_id = b.mb_id
         where a.wr_29 between '{$stx1}' and '{$stx2}' and a.wr_50 like '%{$stx7}%'
         group by a.mb_id, b.mb_id ORDER BY tot DESC

이 값과 


        select a.mb_id, b.mb_id, count(*) as cnt , sum(a.wr_31) as tot
          from g5_write_cscenter a
                   inner  join g5_member b on a.mb_id = b.mb_id
         where a.wr_29 between '{$stx1}' and '{$stx2}' and a.wr_50 like '%{$stx7}%'
         group by a.mb_id, b.mb_id ORDER BY tot DESC

 

의 as tot 값이 틀린데...

이유를 아시는 분 계신가요?

 

회원member  join 값과 g5_write_csorder 의 join 값이 틀려서...

제가 이해를 잘못하고 있나 싶어서 질문드립니다.

 

어차피 둘다 g5_write_cscenter의 wr_31 합산 금액이 아닌가요?

 

        $result = sql_query($sql, TRUE);
        while ($row = sql_fetch_array($result)) {

 

}

로 돌리고 있습니다.

이 질문에 댓글 쓰기 :

답변 1

둘다 g5_write_cscenter 테이블의 wr_31의 합산금액은 맞지만

합산을 위한 추출조건이 다르네요

join 테이블이 

첫번째는 g5_write_csorder

두번째는 g5_member

 

테이블명으로 추론해서 설명하면

첫번째는  주문자중에서 센터에 포함된 사용자가 조건이고

두번째는  회원전체중에서 센터에 포함된 사용자가 조건이 되죠

 

따라서 합산이 일치하는경우는 회원이 둘다 동일할때만 입니다.

cscenter에서 멤버회원과 중복된
cscenter에서 csorder와 중복된 걸 검색하는게 아닌

멤버회원에서 cscenter가 포함된,
csorder 에서 cscenter가 포함된 사용자라는 말씀이시죠?



그런데 위아래를 바꿔봐도 sum 금액이 변동되는건 무엇때문인가요?


        select a.mb_name, b.mb_id, c.mb_id, count(*) as cnt , sum(b.wr_31) as totb, sum(c.wr_31) as totc
          from g5_member a
                   left join g5_write_csorder b on a.mb_id = b.mb_id
                   left join g5_write_cscenter c on a.mb_id = c.mb_id
         where b.wr_29 between '{$stx1}' and '{$stx2}' and b.wr_50 like '%{$stx7}%' and NOT b.wr_54 IN ('exchange') and NOT b.wr_7 IN ('4') and
		 c.wr_29 between '{$stx1}' and '{$stx2}' and c.wr_50 like '%{$stx7}%'
         group by a.mb_name, b.mb_id ORDER BY totb DESC


말씀하신대로...

g5_member가 포함된 cscenter
g5_member가 포함된 csorder

이렇게 바꿔봐도 금액은 맞질 않네요...

um(b.wr_31) as totb, sum(c.wr_31) as totc 이걸 맞춰야 하는데...

답변을 작성하시기 전에 로그인 해주세요.
전체 234
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT