>>Marvin™ 님께서 쓰시길<<
:: 안녕하세요..고수님들..질문드립니다.
:: 여러개의 게시판들에 올라온 글들중에 가장 최근 혹은 가장 조회수가 많은 글을 하나 뽑아서 그 제목
:: 을 출력하려고 하는데요..잘 안되는군요...ㅡㅡ;;
:: 한개의 테이블에서 time이라는 필드의 최대값으로 조회해서 num이라는 필드 데이터를 가지는 칼럼의 ti
:: tle을 가져오는 sql은
:: select title from 테이블명 where num=(select num from 테이블명 where time=(select max(time) from
:: 테이블명));
:: 으로도 해결이 가능한거 같은데..여러개의 테이블에서는 어떻게 해야 하는지요..
:: 또 한가지 제약조건은 테이블 갯수가 항상 일정하지는 않는다는 것입니다.
:: (테이블이 2개일수도 있고 4개일수도 있고..ㅡㅡ;; )
:: 참고로 PHP에서 돌릴 sql입니다.
그런방법도 괜찮지만
퍼포먼스를 위해 인덱스생성 후
create index test_nuk on test(time);
create index test2_nuk on test2(time);
create index test3_nuk on test3(time);
select a, b
from ( select /*+ index_desc(test test_nuk) */ time a, title b
from test
where rownum = 1
union all
select /*+ index_desc(test2 test2_nuk) */ time a, title b
from test2
where rownum = 1
union all
select /*+ index_desc(test3 test3_nuk) */ time a, title b
from test3
where rownum = 1
order by a desc
) a
where rownum = 1;
해보심도
그런데
::한가지 제약조건은 테이블 갯수가 항상 일정하지는 않는다는 것입니다.
위내용은 한번 만들고 손안대시겠다면
스토어드프로시져 만들기 전에는 구현하기가 상당히 힘들거 같군요.
물론 스토어드프로시져로 만드는 것도 힘들겠어요.
그렇치 않다면 뷰테이블을 만드셔서
테이블이 바꿜때마다 뷰테이블만 고치시면 될 것 같군요.
위스크립트를 VW_TEST에 작성한 후
select * from VW_TEST;
테스트 안해봐서 확신 못합니다. 쩝.
|