sql 질문

sql 질문

QA

sql 질문

본문


        $sql = "
            select a.mb_id, b.mb_name, wr_12, count(*) as cnt , sum(a.wr_31) 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}'
             group by a.mb_id, b.mb_name ORDER BY tot DESC";
        $result = sql_query($sql);
        while ($row = sql_fetch_array($result)) {
        $list_name = explode('||',$row['wr_12']);

 

기간내에 포함되는 지난 모든 게시글의 wr_12값을 뿌려주고 싶은데..

저렇게 하니까 기간내 모든 wr_12값이 아닌 바로 이전 게시글의 wr_12값만 가져옵니다.

 

기간내 모든 wr_12값을 전부 뿌려줄려면 어떻게 해야 하나요?

이 질문에 댓글 쓰기 :

답변 2

        $sql = "
            select a.mb_id, b.mb_name, group_concat( wr_12) wr_12, count(*) as cnt , sum(a.wr_31) 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}'
             group by a.mb_id, b.mb_name ORDER BY tot DESC";

음 저렇게 하시면 모든 기간내에 wr_12값 가져오실거 같은데..

나머지 게시글이 wr_29 값이 없거나, mb_id 가 없거나.. 조건에 맞지 않거나 하지 아닐까요..? 

 

wr_12 값이 배열로 들어갔을 리는 없을거같아요
위에 보니까 abc||cde||fg 이런식으로 들어가 있으신거같은데 하나의 값이죠..

$result = sql_query($sql);
이부분 윗줄에서
echo $sql;

찍어보시고

나온 쿼리문
phpmyadmin 에서 쿼리 돌려보시면 정상적으로 원하시는 값이 나오나요?

아.. 쿼리가 아예 잘못 됐네요...
혹시 멤버테이블을 조인한 이유가 있나요?
회원 한명당 하나만 불러오시나요?
그렇다면, wr_12는 그회원이 작성한 글중 어떤걸 기준으로 뽑으시나요?
아.. 기간내에 그회원이 작성한 모든글의 wr_12의 값인가요?


 $sql = "
            select a.mb_id, b.mb_name, wr_12, count(*) as cnt , sum(a.wr_31) 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}'
             group by a.mb_id, b.mb_name ORDER BY tot DESC";

그렇면... 제 짧은 지식으로는..

while문 안에서 쿼리를 한번더 돌리셔서, wr_12값을 찍어주는게 좋을거같아요!
분명히 더 좋고 빠른방법은 있겠지만.. 그건 다른분이 아마!


$sql = "
            select a.mb_id, b.mb_name, count(*) as cnt , sum(a.wr_31) 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}'
             group by a.mb_id, b.mb_name ORDER BY tot DESC";
        $result = sql_query($sql);
        while ($row = sql_fetch_array($result)) {

       
  $sql = "
  select wr_12
from {$write_table}
where mb_id = {$row['mb_id']}
";
// 다시 반복문 써서 출력 
        $list_name = explode('||',$row2['wr_12']);

~~~~

회원 한명당 하나만 불러온다는게 무슨 말인지 모르겠습니다.
기간내에 모든 게시글을 검색해서... 같은 id값을 검색해서 순위를 메기기 때문에...
wr_12값은 해당 회원이 구입한 구입 물품입니다.

wr_31은 wr_12값을 모두 더한 값이고.. 그 금액으로 순위를 매기고 있습니다.

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

회원로그인

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