통합게시판으로 게시판명 불러오기
본문
제가 여러 게시판을 묶어서 통합게시판을 만들어 각 게시글들과, 테이블명을 불러오려고 합니다.
여러개의 테이블을 union all 로 통합을 했거든요
g5_board에서 테이블명을 가져오려고 하는건데
근데 g5_write_테이블과, g5_board 디비는 서로 공유하고 있는 필드가 없는데 어떻게 테이블명을 가져올까요?
결국은 저는 union all로 통합한 g5_write 게시판들의 게시판 명을 가져와서 이 전체 통합한 게시판을 페이징 처리 하려고 합니다.
아래와 같이 테이블을 배열로 넣고
$tableList = array("g5_write_B01","g5_write_B02");
//g5_write_를 자르고 테이블 명만 남김
$bo_table_name[0] = substr($tableList[0], -10, 12);
//아래는 union all로 통합하는 쿼리
$sql = "(select * from ".$tableList[0]." as t, g5_board as b where b.bo_table=".$bo_table_name[0].")";
for($i = 1; $i < count($tableList); $i++) {
$bo_table_name[$i] = substr($tableList[$i], -10, 12);
$sql .= " union all (select * from ".$tableList[$i]." as t, g5_board as b where b.bo_table=".$bo_table_name[$i].")" ;
}
$sql .= " limit {$from_record}, {$rows}";
위처럼 해봤는데 아무것도 뜨지 않습니다.
아래와 같이 하면 $tableList[$i] 안에 있는 게시글 제목만 출력이 됩니다.
저는 각 게시글에서 게시판명도 필요하거든요!
어떻게 하면 통합으로 묶어진 g5_write에서 게시판명을 가져와서 출력할 수 있을까요?
$sql = "(select * from ".$tableList[0].")";
for($i = 1; $i < count($tableList); $i++) {
$sql .= " union all (select * from ".$tableList[$i].")" ;
}
$sql .= " limit {$from_record}, {$rows}";
아니면 가상 필드를 만들어서 각 투플마다 해당 게시판의 이름을 넣는다던지 이런 방법이 있을까요?
제가 초보라 자세한 답변 주시면 감사하겠습니다.. !!:)
!-->!-->답변 2
$boards = $u_query = array();
$query = my_sql_query("SELECT bo_table, bo_subject FROM g5_board");
while($rows = my_sql_fetch_array($query)) {
$boards[$rows['bo_table']] = $rows['bo_subject'];
}
foreach($boards as $bo_table => $bo_subject) {
$u_query[] = "SELECT wr_id, wr_subject, '".$bo_table."' AS tbl, '".$bo_subject."' AS nm FROM g5_write_".$bo_table." WHERE wr_is_comment = 0";
}
$query_str = implode(" UNION ALL ", $u_query);
$query = "SELECT * FROM (".$query_str.") AS mytbl ORDER BY wr_id DESC";
$result = mysql_query($query);
while($rows = mysql_fetch_array($result)) {
echo $rows['tbl']." : ".$rows['nm']." : ".$rows['wr_subject']."<br />";
}
참고로 그누에서 제공하는 함수(sql_*)는 union은 안 먹히게 되어 있습니다.
!-->
답변을 작성하시기 전에 로그인 해주세요.