전체게시판의 여분필드 최대값 관련입니다. 채택완료
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개
</p>
<p>$sql = "select * from g5_board ";</p>
<p>$result = sql_fetch($sql);</p>
<p>$sql2 = "";</p>
<p>while($row = sql_fetch_array($result)) {</p>
<p> if ($sql2 ) .= "union all ";</p>
<p> $sql2 .= "select max(wr_1) maxwr1, {$row[bo_table]} tablename from g5_write_{$row[bo_table]} "; </p>
<p>}</p>
<p> </p>
<p>$result2 = sql_query($sql2);</p>
<p>while($row2 = sql_fetch_array($result2)) {</p>
<p> echo $row2[maxwr1]." - ".$row2[tablename]."
";</p>
<p>}</p>
<p>
이정도면 나머지는 구현가능하시죠?
답변에 대한 댓글 3개
아. 제가 하나 빠뜨렸네요
if ($sql2 ) .= "union all ";
==>
if ($sql2 ) $sql2 .= "union all ";
이렇게 되어야합니다. 죄송.. 실행안하고 그냥 막 타이핑하다보니
댓글을 작성하려면 로그인이 필요합니다.
정성껏 달아주신 분의 예제처럼 $변수 앞뒤로 {}를 달아주세요. 웬만하면 변수인줄 인터프리터가 알기는 하지만, 그래도 전반적 코드의 오류를 줄이고, 읽기 좋고, 속도를 향상시키려면 그렇게 하라고 합니다.
?> 이것도 쓰지 말고 를 쓰라고 하는데, 이거 참 잘안되더군요. 그래도 해야겠죠...
그리고 한 때 php3,4 쓸 때 $_REQUEST나 $_POST, $_GET 안쓰고도 폼변수, 링크로 변수가 잘 넘어왔기에 그냥 $변수 사용했는데, 보안문제로 변수 오염문제를 막기 위해 꼭 써두도록 하구요.
그냥 지나가다가... 긁적 긁적...
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
해당 기능을 구현하려면 단순하게
'g5_' 접두어를 가진 테이블 중 wr_1 필드를 가진 테이블들에 대해 순회하면서 비교하거나
서브쿼리 묶음으로 처리할수는 있겠지만,
후에 성능을 생각하면 올바르지 않은 방법이고
wr_1 의 max 값을 위한 별도의 테이블 하나를 구성 후
각 wr_1 필드를 가진 테이블이 insert / update 될 때에
트리거 혹은 프로그램단 에서
</p>
<p>$newval = $_REQUEST['wr_1_max'];</p>
<p>$query = "UPDATE 별도테이블 SET wr_1_max = (CASE WHEN wr_1_max < {$newval} THEN {$newval} ELSE wr_1_max) WHERE ...";</p>
<p>
이러한 형태로 구성하면 후에는 별도테이블의 wr_1_max 값만 가지고 오면 되는 형태가 됩니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인