각각의 게시판에서 제일 최근글하나씩을 모아 정렬

by 조쉬 posted Aug 30, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
게시판의 제일 최근글을 가져오는 쿼리를 합치고 정렬하면 될것같아서 다음과 같이 해봤다
-- 최근글 하나를 얻어온다
SELECT TOP 1 No, Title, Idate FROM tbCellPhoto ORDER BY Idate DESC

위쿼리를 UNION ALL 로 합치면 될것이다. UNION 과의 차이는 중복을 허용하느냐 아니냐의 차이이다.
-- 이쿼리는 ORDER 에러가 났다
(SELECT TOP 1 No, Title, Idate FROM tbCellPhoto ORDER BY Idate DESC
UNION ALL
SELECT TOP 1 No, Title, Idate FROM tbExchange ORDER BY Idate DESC)
ORDER BY Idate DESC

위쿼리는 에러가 나서 못쓰고 최근글을 얻어오는 쿼리를 바꾸어야 했다. 이것도 최근글 얻어오는쿼리이다.
-- No 제일 큰값과 일치하는 No 의 글 하나를 얻어오는것
SELECT TOP 1 No, Title, Idate, path = '/Border/Exchange' FROM tbExchange
WHERE No = (SELECT MAX(No)  FROM tbExchange)

그리고 위의 쿼리를 UNION ALL 과 합쳐서 결과 값을 얻어 올수 있었다. 테이블이 많이 좀 무식한 방법이라
생각이 들지만 아직 이방법밖에는 생각이 나지 않는다.
SELECT TOP 1 No, Title, Idate, path = '/Border/Exchange' FROM tbExchange
WHERE No =  (SELECT MAX(No)  FROM tbExchange)
UNION ALL
SELECT TOP 1 No, Title, Idate, path = '/Border/Confession' FROM tbConfession
WHERE No = (SELECT MAX(No)  FROM tbConfession)

path = '/Border/Exchange'  값을 넣은것은 메인에 최근글을 링크했을경우 클릭하면 그 본문을 찾아가야 되는데
그 글의 본문 경로를 임의로 넣었다.