Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

그누보드 여러 게시판에서 글 추출 후 정렬하는 쿼리

2013-01-12 by 편리

MySQL에서는 union 이라는 함수가 있다. select 쿼리문의 결과를 하나의 결과로 묶을 수가 있다.

이 union을 이용해서 공개게시판으로 많이 사용되는 그누보드에서 여러 게시판의 글을 추출한 후

특정 필드로 정렬해서 보여주는 것을 만들어보고자 한다.

우선 게시판 테이블명을 g4_write_aaa, g4_write_bbb 라고 가정한다. 그누보드에서는 게시판에 접근하기 위해

bo_table 이라는 것을 사용하는데 여기서는 aaa와 bbb가 각 게시판의 bo_table 값이 된다.

aaa 게시판에서 최근에 등록된 5개의 글을 가져오는 쿼리는 아래와 같다. 기본적으로  wr_id, wr_subject, wr_datetime 필드 정보만 가져오는 것으로 한다. 필요하다면 필드명을 추가해주면 된다.

$sql = ” select ‘aaa’ as bo_table, wr_id, wr_subject, wr_datetime

            from `g4_write_aaa`

            where wr_is_comment = ‘0’

            order by wr_num asc

            limit 0, 5 “;

위 쿼리에서 ‘aaa’ as bo_table 이란 부분은 존재하지 않는 bo_table 필드의 값을 aaa 라고 지정해주는 것이다.

그누보드에서는 bo_table 값이 있어야 게시판에 접근할 수 있으므로 여러 개의 게시판에서 글을 추출하는 것이라면

반드시 필요한 것이다. 하나라면 없어도 되는 부분이다. bbb 게시판에 대해서도 위 처럼 하면된다.

그럼 이제 두개의 쿼리 결과를 하나로 합쳐야 한다. 이 때 사용하는 것이 union 이다.

$sql = ” ( select ‘aaa’ as bo_table, wr_id, wr_subject, wr_datetime

                from `g4_write_aaa`

                where wr_is_comment = ‘0’

                order by wr_num asc

                limit 0, 5  )

          UNION ALL

          ( select ‘bbb’ as bo_table, wr_id, wr_subject, wr_datetime

                from `g4_write_bbb`

                where wr_is_comment = ‘0’

                order by wr_num asc

                limit 0, 5 )

          order by wr_datetime desc

          limit 0, 5 “;

위처럼 쿼리를 작성하면 두 개의 select 결과가 하나의 결과로 합쳐지게 된다. 위의 결과는 aaa와 bbb에서 최근

등록순으로 각 5개의 글을 추출하고 이것을 합쳐서 다시 최근등록순으로 5개의 글을 추출하는 것이다. 즉 aaa와

bbb 두 개의 게시판에서 최신등록글 5개를 추출하는 것이다. 이 결과를 이용해서 최근글을 보여주면 된다.

아래는 간단히 php 파일을 만들어서 쿼리 결과를 보여주는 것이다. 그누보드가 설치된 상태에서 사용할 수 있다.

<?php
include_once(‘./_common.php’);
include_once($g4[‘path’].’/head.sub.php’);

$sql = ” ( select ‘test1’ as bo_table, wr_id, wr_subject, wr_num, wr_datetime
                from `g4_write_test1`

                where wr_is_comment = ‘0’

                order by wr_num asc
                limit 0, 5 )
         union all
         ( select ‘test2’ as bo_table, wr_id, wr_subject, wr_num, wr_datetime
                from `g4_write_test2`

                where wr_is_comment = ‘0’

                order by wr_num asc
                limit 0, 5 )
         order by wr_datetime desc
         limit 0, 5 “;
$result = sql_query($sql);

for($i=0; $row=sql_fetch_array($result); $i++) {
    print_r($row);
    echo ‘<br />’.”n”;
}

include_once($g4[‘path’].’/tail.sub.php’);
?>

참고사항 :  UNION과 UNION ALL 의 차이 및 주의 사항

Post navigation

Previous Post:

종합비타민

Next Post:

렌즈 처분하려고 사진까지 찍어놓았건만

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes