그누보드 어드민에서 union 처리 문의 채택완료
실제 db에서 union하여 쿼리하면 두개 테이블이 통합되어 잘 나오는데
그누보드 어드민에서 아래와 같이 처리하면 안나오네요
아래 소스 상에 $sql_common에 원소스는 item07 테이블로 지정 ==> 정상적으로 쿼리됨
$sql_common에 하나의 이상의 테이블을 union 하였을 경우 데이타가 나오지 않습니다.
//$sql_common = " from (g5_write_item07 ) ";
$sql_common = " from (select wr_id, wr_datetime from g5_write_item07 union select wr_id, wr_datetime from g5_write_item08) x ";
실제 db에서 아래와 같이 쿼리를 하면 정상적으로 잘 나옵니다.
select count(*) as count from (select wr_id, wr_datetime from g5_write_item07 union select wr_id, wr_datetime from g5_write_item08) x where wr_is_comment = 0 order by $sst $sod, wr_id ;
코드는 총합 체크하는 부분만 남겼습니다.
일단 총 등록건수가 union 테이블을로 변경하면 0으로 나옵니다

</p><p> </p><p><?php</p><p>$sub_menu = "500700";</p><p>include_once('./_common.php');</p><p> </p><p>auth_check($auth[$sub_menu], 'r');</p><p> </p><p>//$sql_common = " from (g5_write_item07 ) ";</p><p>$sql_common = " from (select wr_id, wr_datetime from g5_write_item07 union select wr_id, wr_datetime from g5_write_item08) x ";</p><p> </p><p>if (!$sst) {</p><p> $sst = "wr_datetime";</p><p> $sod = "desc"; </p><p>}</p><p> </p><p>if ($stx && !$showmode) {</p><p> $sql_search = " where $sfl like '%$stx%' and wr_is_comment = 0 ";</p><p>} else {</p><p> $sql_search = " where wr_is_comment = 0 ";</p><p> $sql_order = " order by $sst $sod, wr_id ";</p><p>}</p><p> </p><p>//총 등록 건 수 </p><p><span style="font-size: 11pt;">$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";</span></p><p>$row = sql_fetch($sql);</p><p>$total_count = $row['cnt'];</p><p> </p><p>//페이지당 노출 건수</p><p>$rows = $config['cf_page_rows'];</p><p> </p><p>$total_page = ceil($total_count / $rows); // 전체 페이지 계산</p><p>if ($page < 1) { $page = 1; } // 페이지가 없으면 첫 페이지 (1 페이지)</p><p>$from_record = ($page - 1) * $rows; // 시작 열을 구함</p><p> </p><p>//데이터 처리 쿼리</p><p>$sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$from_record}, {$rows} ";</p><p>$result = sql_query($sql);</p><p> </p><p>$listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'" class="ov_listall">전체목록</a>';</p><p> </p><p>$g5['title'] = $showtitle;</p><p>if(!$g5['title']) {$g5['title'] = "정보지";}</p><p>include_once('./admin.head.php');</p><p> </p><p>$colspan = 15;</p><p>?></p><p> </p><p><div class="local_ov01 local_ov"></p><p> <?php echo $listall ?></p><p> 총 등록건수 <?php echo number_format($total_count) ?>개</p><p></div></p><p> </p><p> </p><p><!----></p><p> </p><p><script></p><p>function fboardlist_submit(f)</p><p>{</p><p> if (!is_checked("chk[]")) {</p><p> alert(document.pressed+" 하실 항목을 하나 이상 선택하세요.");</p><p> return false;</p><p> }</p><p> </p><p> if(document.pressed == "선택삭제") {</p><p> if(!confirm("선택한 자료를 정말 삭제하시겠습니까?")) {</p><p> return false;</p><p> }</p><p> }</p><p> </p><p> return true;</p><p>}</p><p> </p><p>$(function(){</p><p> $(".board_copy").click(function(){</p><p> window.open(this.href, "win_board_copy", "left=100,top=100,width=550,height=450");</p><p> return false;</p><p> });</p><p>});</p><p></script></p><p> </p><p><?php</p><p>include_once('./admin.tail.php');</p><p>?></p><div>
</div><div>
답변 2개
phpmyadmin에서는 실행을 해 보셨죠?
sql_query, sql_fetch 이 두 함수에서 union을 풀었을지 모르겠네요.
기본 코드는 union 제한하고 있어서 그누에서 제공하는 함수로는 값 갖고 올 수가 없습니다.
mysql_query, mysql_fetch_array 함수 사용하셔야 합니다.
답변에 대한 댓글 2개
$row = mysql_query(mysql_fetch_array($sql));
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
select count(*) as count from (select wr_id, wr_datetime from g5_write_item07 union select wr_id, wr_datetime from g5_write_item08) x where wr_is_comment = 0 order by $sst $sod, wr_id ;
이렇게 쿼리 요청 시 정상적으로 나오는거 확인은 했는데요
$sql = " select count(*) as cnt $sql_common ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
모두 바꿔야 하는건가요?