SQL 질문 드립니다. 하나의 최신글에 두개 게시판 불러오기
$limit = 15;
$sql= "select * from g5_write_aaa order by wr_id desc limit 0, 50";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
aaa 라는 게시판을 불러오게 했는데..
bbb 라는 게시판도 하나의 최신글에 불러오게 하고 싶어요....
혹시 도움을 받을 수 있을까요???
답변 4개
UNION을 사용하여 하나의 2개의 테이블을 1개의 테이블로 볼수 있습니다.
aa라는 별칭을 넣어서 aa.w_id값을 기준으로 정렬후 SELECT로해서 게시판의 내용을 뽑아오시면 될꺼 같습니다.
SELECT * FROM (
SELECT * FROM g5_write_aaa
UNION
SELECT * FROM g5_write_bbb
) aa
order by aa.wr_id desc limit 0, 50
해보시다 안되시면 쪽지 주세요.
SELECT n.bo_table,n.wr_id,n.bn_datetime,
CASE
WHEN bo_table = 'aaa'
THEN (SELECT wr_subject FROM g5_write_aaa WHERE wr_id = n.wr_id)
WHEN bo_table = 'bbb'
THEN (SELECT wr_subject FROM g5_write_bbb WHERE wr_id = n.wr_id)
END AS 'wr_subject'
FROM g5_board_new AS n
ORDER BY n.bn_datetime DESC
LIMIT 50
최근게시물 db를 활용한 방법으로 짜봤습니다 ㅎㅎ
최근게시물은 관리자>환경설정 에서 최근게시물 저장 일수를 설정할 수 있으니 참고바래요
단점: 이렇게 쓰시면 필드명 같을때 어떤 테이블의 필드명인지 구분이 안됩니다.
1.그래도 상관없다면 저렇게 테이블을 모두 합쳐서 쓰는 방법이 있습니다.
$limit = 15;
$sql= "SELECT * FROM g5_write_aaa UNION SELECT * FROM g5_write_bbb order by wr_id desc limit 0, 50";
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++) {
2. for문으 따로 돌려서 사용하는 방법이 있습니다.
$limit = 15;
$sql= "SELECT * FROM g5_write_aaa UNION SELECT * FROM g5_write_aaa order by wr_id desc limit 0, 50";
$result = sql_query($sql);
$sql= "SELECT * FROM g5_write_bbb UNION SELECT * FROM g5_write_bbb order by wr_id desc limit 0, 50";
$result2 = sql_query($sql);
//g5_write_aaa 테이블의 값
for ($i=0; $row = sql_fetch_array($result); $i++) {
//예로 wr_id출력하고 싶다면
echo $row['wr_id'];
}
//g5_write_bbb 테이블의 값
for ($i=0; $row2 = sql_fetch_array($result2); $i++) {
//예로 wr_id출력하고 싶다면
echo $row2['wr_id'];
}
각각의 for문을 따로 사용하시면 중복값이 피할 수 있습니다.
답변을 작성하려면 로그인이 필요합니다.