레이아웃에서 현재 포인트러쉬 모듈의 최근 이벤트 10개 중 rush_status 가 OPEN 인 값을 가진 것의 숫자를 세어 보려고 합니다.

 

 

db에는 

 

xe_pointrush 테이블에 rush_status 에 OPEN 또는 CLOSE 값을 가지게 되어 있습니다.

 

OPEN 값을 가진 게시물이 카운트가 되었다면 현재 응모마감이 되지 않은 포인트응모 행사가 있다는 것이어서 이 값을 가지고 레이아웃에 표시를 해 주려고 합니다.

 

최근 포인트 이벤트는 document_srl 값이 증가하게 되어있습니다.

 

xe_pointrush table :  document_srl    module_srl    use_group  rush_point   ......      rush_status

 

 

  • profile

    쿼리를 아래처럼 작성해 보세요.
    xe_pointrush 테이블에서 document_srl 값이 높은 10개중 rush_status가 'OPEN'인것을 카운트 합니다.

    select count(*) from (select * from xe_pointrush order by document_srl desc limit 10) as top10 where rush_status='OPEN'

  • profile profile
    감사합니다. 시도해보겠습니다!
  • profile profile
    제가 사용했던 쿼리에 비슷하게 넣으려고 하니 에러가 나고 잘 안되네요.

    {@
    $oDB = &DB::getInstance();
    $query = $oDB->_query
    $result = $oDB->_fetch($query);
    $opencount = $result->count;
    }

    여기에 적용을 하려면 어찌 바꿔야 하는건가요?
  • profile
    $query = $oDB->_query("select count(*) from (select * from xe_pointrush order by document_srl desc limit 10) as top10 where rush_status='OPEN'");

    이렇게 한번 해 보세요. 그리고 $result에 카운트 값만 리턴되니까 $opencount = $result->count;이 과정 필요없이 $result값을 그냥 이용하시면 될꺼 같습니다.
  • profile profile
    {$result} 이런식으로 담긴 값을 출력해 보려고 하는데 컴파일 에러가 나네요....
  • profile profile
    {$query} 이렇게 출력을 해보면....
    Resource id #182 이렇게 출력이 되구요.
  • profile profile
    테스트 해보니 제가 생각한 형태로 결과값이 리턴되지 않네요 ㅠㅠ
    아래처럼 테스트 해보니 정상 작동 합니다.

    {@
    $oDB = &DB::getInstance();
    $query = $oDB->_query("select count(*) as count from (select * from xe_pointrush order by document_srl desc limit 10) as top10 where rush_status='OPEN'");
    $result = $oDB->_fetch($query);
    }
    <!--@if($result->count > 0)-->
    <p>진행중인 이벤트 있음</p>
    <!--@else-->
    <p>진행중인 이벤트 없음</p>
    <!--@end-->
  • profile profile

    감사합니다. 알려주신대로 잘 쓰겠습니다. 

  • profile profile
    처음 사용하셨던대로 $opencount = $result->count;를 추가하시고 $opencount를 이용하셔도 됩니다.
    이를 위해 쿼리가 약간 수정 되었습니다.
  • profile profile
    네 잠시 생각해 보니 그렇게 해야 하는데 제가 엉뚱한 것을 출력했더라구요. 도움 감사합니다!