sql 질문드립니다.

sql 질문드립니다.

QA

sql 질문드립니다.

본문


                $write_table = $g5['write_prefix'] . $bo_table;
                $sum_count = "0";
                $sql = "
                    select a.mb_id, b.mb_name, b.mb_13, b.mb_level, group_concat(wr_56 separator '||') wr_56, a.wr_50, a.wr_46, count(a.wr_56) as cnt , sum(replace(a.wr_56,',','')) as tot
                      from {$write_table} a
                               left outer join {$g5['member_table']} b on a.mb_id = b.mb_id
                     where wr_29 between '{$stx1}' and '{$stx2}' and wr_50 like '%{$stx10}%' and wr_8 like '%{$stx6}%' and wr_6 like '%{$stx4}%' and wr_5 like '%{$stx5}%' and wr_7 like '%{$stx7}%' and wr_52 like '%{$stx8}%' and wr_71 like '%{$stx9}%'
                     group by a.mb_id, b.mb_name ORDER BY tot DESC
                ";
                $result = sql_query($sql, true);
                while ($row = sql_fetch_array($result)) {

<?php echo $row['cnt'] ?> : 1

<?php echo number_format($row['tot']); ?>  : 1,000,000 

 

wr_56이 배열로 되어 있습니다.

 

1,000,000||1,500,000||800,000

 

$row['tot'] 했을때나, $row['cnt'] 했을때

1개만 가져옵니다.

 

그래서 카운트와 tot값이 맞지 않는데 배열값 전부를 합친금액과 배열의 개수를 정확하게 가져오고 싶은데

어떻게 해야 할까요?

이 질문에 댓글 쓰기 :

답변 2

1,000,000||1,500,000||800,000 분리 했잖아요 | 이렇게 분리 한거면

$test = expload('|',$row['wr_1']);  이런식으로 분리한 필드를 배열에 넣어줘야해요 $row['wr_1'] << 이건 테스트로 넣은거에요 직접 필드 넣어서 해보세요

그러고 사용할적에는 $test[0] 이렇게 0부터 시작해요 3가지가 있으니 $test[0] $test[1] $test[2] 이렇게 있겠죠

응용해보세요 

1. group by a.mb_id, b.mb_name

하실 거라면 굳이 left join하실 필요가 없습니다.

2. group_concat(wr_56 separator '||') wr_56,

count(a.wr_56) as cnt ,

sum(replace(a.wr_56,',','')) as tot

from {$write_table} a

 

group by mb_name 했으므로 wr_56, cnt, tot 모두 mb_name 당 한 건만 나옵니다.

query 문을 보면 원하시는 대로 나올 듯한데요...

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

회원로그인

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