전체게시판의 여분필드 최대값 관련입니다.

전체게시판의 여분필드 최대값 관련입니다.

QA

전체게시판의 여분필드 최대값 관련입니다.

본문

wr_1의 최대값을 전체게시판과 비교해서 가져오려고 하는데요 쿼리문을 어떻게 짜야할지

답이 안나오고 몇시간째 찾아다니다 여기다 글을 올립니다!

제가 시도해 본게,

$sql = " SELECT MAX(wr_1) FROM g5_board ";

$sql = " SELECT MAX(wr_1) FROM $write_table "; <--이건 해당 게시판 최대값만 가져오더군요;;

$sql = " SELECT MAX(wr_1) FROM $g5_board_001 AND $g5_board_002 AND $g5_board_003 ";

 

등등 입니다!! FROM 다음에 뭔가 있을 것 같은데 잘 안보이네요 ㅠ.ㅜ 도움 부탁드립니다!

이 질문에 댓글 쓰기 :

답변 3


$sql = "select * from g5_board ";
$result = sql_fetch($sql);
$sql2 = "";
while($row = sql_fetch_array($result)) {
    if ($sql2 ) .= "union all  ";
    $sql2 .= "select max(wr_1) maxwr1, {$row[bo_table]} tablename from g5_write_{$row[bo_table]} ";  
}
 
$result2 = sql_query($sql2);
while($row2 = sql_fetch_array($result2)) {
    echo $row2[maxwr1]." - ".$row2[tablename]."<br/>";
}

 

이정도면 나머지는 구현가능하시죠?

@네오라인
아. 제가 하나 빠뜨렸네요
if ($sql2 ) .= "union all  ";
==>
if ($sql2 ) $sql2 .= "union all  ";

이렇게 되어야합니다. 죄송.. 실행안하고 그냥 막 타이핑하다보니

해당 기능을 구현하려면 단순하게

'g5_' 접두어를 가진 테이블 중 wr_1 필드를 가진 테이블들에 대해 순회하면서 비교하거나

서브쿼리 묶음으로 처리할수는 있겠지만,

후에 성능을 생각하면 올바르지 않은 방법이고

 

wr_1 의 max 값을 위한 별도의 테이블 하나를 구성 후

각 wr_1 필드를 가진 테이블이 insert / update 될 때에

트리거 혹은 프로그램단 에서

 


$newval = $_REQUEST['wr_1_max'];
$query = "UPDATE 별도테이블 SET wr_1_max = (CASE WHEN wr_1_max < {$newval} THEN {$newval} ELSE wr_1_max) WHERE ...";

 

이러한 형태로 구성하면 후에는 별도테이블의 wr_1_max 값만 가지고 오면 되는 형태가 됩니다.

정성껏 달아주신 분의 예제처럼 $변수 앞뒤로 {}를 달아주세요. 웬만하면 변수인줄 인터프리터가 알기는 하지만, 그래도 전반적 코드의 오류를 줄이고, 읽기 좋고, 속도를 향상시키려면 그렇게 하라고 합니다. 

<? ?> 이것도 쓰지 말고 <?php ?>를 쓰라고 하는데, 이거 참 잘안되더군요. 그래도 해야겠죠... 

그리고 한 때 php3,4 쓸 때 $_REQUEST나 $_POST, $_GET 안쓰고도 폼변수, 링크로 변수가 잘 넘어왔기에 그냥 $변수 사용했는데, 보안문제로 변수 오염문제를 막기 위해 꼭 써두도록 하구요. 

그냥 지나가다가... 긁적 긁적... 

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

회원로그인

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