테스트 사이트 - 개발 중인 베타 버전입니다

sql 질문드립니다. 채택완료

밀랍 3년 전 조회 1,025

</p>

<p>                $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)) {</p>

<p>

: 1

  : 1,000,000 

 

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

 

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

 

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

1개만 가져옵니다.

 

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

어떻게 해야 할까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

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 문을 보면 원하시는 대로 나올 듯한데요...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

엑스엠엘
3년 전
wr_56은 계산 목적이므로 int 타입으로 변경하시는 것이 좋습니다.
따라서 ,를 빼고 insert 하세요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인