카운트 조정을 sql 쿼리 여러개시판 가능한가요?

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
카운트 조정을 sql 쿼리 여러개시판 가능한가요?

QA

카운트 조정을 sql 쿼리 여러개시판 가능한가요?

답변 2

본문

이곳 게시판에서 둘러보다가 

 

update g5_board
    set bo_count_write = (select count(*) from g5_write_게시판ID where wr_is_comment = 0)
 where bo_table = '게시판ID'

 

이렇게 하는 방법을 봤는데 게시판을 여러개 한번에 카운트 조정을 할수 있는 방법이 따로 있을까요?

이 질문에 댓글 쓰기 :

답변 2

※ 여러 게시판의 게시글 수를 일괄적으로 한꺼번에 조회하고,

   각 게시판별로 갱신하려 하시는 것인가요.

     > 각 게시판ID에 대해 개별적으로 카운트를 계산하여

    g5_board 테이블의 bo_count_write 필드를 일괄 업데이트할 수 있지 않을까요?

 

  - 새로운 PHP 파일을 만들어 관리자가 접근하여 실행.

 

1. 모든 게시판에 대해 개별적으로 카운트를 조회하고 필드를 업데이트하는 쿼리


UPDATE g5_board b
JOIN (
    SELECT '게시판ID1' AS bo_table, COUNT(*) AS count_write FROM g5_write_게시판ID1 WHERE wr_is_comment = 0
    UNION ALL
    SELECT '게시판ID2', COUNT(*) FROM g5_write_게시판ID2 WHERE wr_is_comment = 0
    UNION ALL
    SELECT '게시판ID3', COUNT(*) FROM g5_write_게시판ID3 WHERE wr_is_comment = 0
    -- 추가적인 게시판들도 여기에 UNION ALL로 계속 추가
) AS subquery ON b.bo_table = subquery.bo_table
SET b.bo_count_write = subquery.count_write;

2. SQL 쿼리를 실행할 PHP 파일


<?php
include_once('./common.php');
if ($is_admin != 'super') {
    die('관리자 권한이 필요합니다.');
}
$sql = "
    UPDATE g5_board b
    JOIN (
        SELECT '게시판ID1' AS bo_table, COUNT(*) AS count_write FROM g5_write_게시판ID1 WHERE wr_is_comment = 0
        UNION ALL
        SELECT '게시판ID2', COUNT(*) FROM g5_write_게시판ID2 WHERE wr_is_comment = 0
        UNION ALL
        SELECT '게시판ID3', COUNT(*) FROM g5_write_게시판ID3 WHERE wr_is_comment = 0
        -- 추가적인 게시판들도 여기에 UNION ALL로 계속 추가
    ) AS subquery ON b.bo_table = subquery.bo_table
    SET b.bo_count_write = subquery.count_write;
";
$result = sql_query($sql);
if ($result) {
    echo "모든 게시판의 글 수가 성공적으로 업데이트되었습니다.";
} else {
    echo "업데이트에 실패했습니다. SQL 오류를 확인하세요.";
}

3. CRON 작업을 추가하실 수도 ~


0 * * * * php /path/to/gnuboard5/update_board_count.php

<?php
include_once('./_common.php');
 
// 업데이트할 게시판 ID 배열
$bo_tables = array(
    'free', // 자유게시판
    'gallery', // 갤러리
);
 
// 각 게시판별로 반복
foreach ($bo_tables as $bo_table) {
    // 게시물 수 업데이트 쿼리
    $sql = " update {$g5['board_table']} 
             set bo_count_write = (
                 select count(*) 
                 from {$g5['write_prefix']}{$bo_table} 
                 where wr_is_comment = 0
             )
             where bo_table = '{$bo_table}' ";
    
    // 쿼리 실행
    sql_query($sql);
}
 
?>
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로