그룹의 모든 게시판의 조회순으로 가지고오기[미친짓인거같은데..]

그룹의 모든 게시판의 조회순으로 가지고오기[미친짓인거같은데..]

QA

그룹의 모든 게시판의 조회순으로 가지고오기[미친짓인거같은데..]

본문

제가 코딩에 부족함이 많아 여기에 질문을 드립니다.

어찌어찌하다가 그룹의 모든 게시판을 조회순으로 가지고 오는것을 만들었는데 

너무 미친짓으로 코딩해 놓은거 같아서.. 저에게 조언 좀 주셨으면 하고 올렸습니다.

---------------------------------------------------------------------
//latest.lib.php
보시면 아시겠지만.. 모든 게시판을 for문으로 돌려서  아래 처럼 배열안에 배열입니다.
조회순으로 정렬해서 저는 각 게시판마다 10개를 조회순으로 정렬해서 가지고 오게 했습니다.
결과적으로 10개의 게시판에 무궁무진한 게시글을 wr_hit(조회순)으로 정렬해서 10개의 글을 가지고 오겠죠
이미 100개의 데이터를 가지고 왔습니다.
array{
array{
}
}
위와 같이 가지고 왔겠죠 10개를 근데.. 여기서 10개를 어떻게.. 합쳐서 즉 100개를 다시 합쳐서 정렬을 시키나!
고민을 하고 고민을 하고 해도 안되는겁니다..
그래서 찾은 함수 array_merge를 사용해서

$c 라는 배열로 하나의 함수로 만들어서 그것을 다시 조회순으로 정렬 했습니다.

이런 미친 코딩해서 사용해도 괜찮을까요...???
(참고로 신문사 홈페이지인데.. 즉 조회순으로 글 가지고 오기입니다.)
더 좋은 방법 있으면 말씀좀 부탁드립니다..
---------------------------------------------------------------------
latest.lib.php
---------------------------------------------------------------------
function latest4($skin_dir="", $bo_table, $rows=10, $subject_len=40, $options="")
{
    global $g4;

    if ($skin_dir)
        $latest_skin_path = "$g4[path]/skin/latest/$skin_dir";
    else
        $latest_skin_path = "$g4[path]/skin/latest/basic";

    $list = array();
$list2 = array();

    $sql2 = " select * from $g4[board_table] where gr_id = 'G01'";  //G01그룹 내의 모든 게시판
$result2 = sql_query($sql2);
for ($j=0; $row2 = sql_fetch_array($result2); $j++){   //모든 게시판을 배열로 돌립니다.
        $list2[$j] = get_list($row2, $bo_table, $latest_skin_path, $subject_len);
$board = sql_fetch($sql2);

$tmp_write_table = $g4['write_prefix'] . $row2[bo_table]; // 게시판 테이블 전체이름
$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_hit desc limit 0, $rows ";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++){ 
$list[$j][$i] = get_list($row, $board, $latest_skin_path, $subject_len); //각 게시판의 조회순으로 정렬
$list[$j][$i][bo_table] = $list2[$j][bo_table];  //링크 때문에 배열에 넣음. 게시판 명
}
}


    
    ob_start();
    include "$latest_skin_path/latest.skin.php";
    $content = ob_get_contents();
    ob_end_clean();

    return $content;
}
---------------------------------------------------------------------
latest.skin.php
---------------------------------------------------------------------

<?
$c = array_merge($list[0],$list[1],$list[2],$list[3],$list[4],$list[5],$list[6]);

foreach ($c as $key => $row) { 
$aaa[$key] = $row[wr_hit];
}

array_multisort($aaa, SORT_DESC, $c);

reset($c);
?>

이 질문에 댓글 쓰기 :

답변 1

전 보통 union all을 사용하기는 하는데, 

(select *, a as table_name  from a order by wr_hit desc limit 10) union all
(select *, b as_table_name from b order by wr_hit desc limit 10)  union all
..

order by wr_hit desc 

솔직히 귀찮아서 이리 쓰기는 하는데, 이게 정답이라고 말씀드리기는 어렵네요

오.. 덕분에 좋은 쿼리문을 알게 됬어요.(제 소스보다 좋은듯..?ㅋㅋ)
근데 덕분에 검색하다가 알게 된 사실인데.. union all 사용할 시에는 * 즉 모든 정보 가지고 오는거 자제 하라는 글을 봤네요.
좋은 정보 감사합니다.

더 좋은 방법 아시는분 댓글 부탁드려용~

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

회원로그인

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