질문
파일 SEQ |
게시물 SEQ |
파일 경로 |
파일 이름 |
1 |
11 |
파일경로1 |
파일 이름1 |
2 |
12 |
파일경로1 |
파일 이름 2 |
3 |
13 |
파일경로1 |
파일 이름 3 |
4 |
14 |
파일경로2 |
파일 이름 4 |
5 |
15 |
파일경로2 |
파일 이름 5 |
6 |
16 |
파일경로2 |
파일 이름 6 |
7 |
17 |
파일경로2 |
파일 이름 7 |
8 |
18 |
파일경로1 |
파일 이름 8 |
9 |
19 |
파일경로1 |
파일 이름 9 |
게시물 SEQ |
게시판 SEQ |
글제목 |
내용 |
11 |
3 |
글제목 |
내용 |
12 |
3 |
글제목 |
내용 |
13 |
4 |
글제목 |
내용 |
14 |
5 |
글제목 |
내용 |
15 |
4 |
글제목 |
내용 |
16 |
5 |
글제목 |
내용 |
17 |
6 |
글제목 |
내용 |
18 |
7 |
글제목 |
내용 |
19 |
6 |
글제목 |
내용 |
두개의 테이블이 있습니다.
조인해서 파일 경로와 파일 네임, 글제목, 내용을 추출하는것입니다.
조건은 게시판 SEQ를 하나씩만 추출해야 합니다. 3,4,5,6,7,8 이렇게요
즉, 각 게시판에서 최근자료 하나씩만 추출하는것입니다. 정렬은 날짜 desc로 해주세요.
각테이블 마지막에 날짜 컬럼이 있습니다.
답변
첫번째 테이블 을 TABLE_A 두번째 테이블을 TABLE_B라고 하면
제가 생각하기에 게시물SEQ가 IDENTITY 값이라면 그냥 이렇게 하셔도 정렬은 될듯 하구요.
SELECT A.파일경로, A.파일이름, B.글제목, B.내용
FROM TABLE_A A
INNER JOIN TABLE_B B
ON A.게시물SEQ = B.게시물SEQ AND B.게시물SEQ IN (SELECT MAX(게시물SEQ) FROM TABLE_B GROUP BY 게시판SEQ
ORDER BY B.SEQ DESC
만약 IDENTITY 값이 아니라면 뒤에 조인문 조건을 이렇게
ON A.게시물SEQ = B.게시물SEQ AND B.날짜컬럼 IN (SELECT MAX(날짜컬럼) FROM TABLE_B GROUP BY 게시판SEQ)
이렇게 바꾸시면 될겁니다.
그리고 ORDER BY A.날짜 컬럼 DESC
머 날짜가 똑같은 경우는 거의 불가능 하기 때문에 문제가 없다고 보셔도 될듯합니다.
이게 정확히 돌아 갈지는 모르지만. 원리는 이겁니다.
두번째 테이블에서 게시판SEQ를 그룹을 지워서 그 기준으로 가장 큰값의 게시물시퀀스 값이나 혹은 가장 큰 날짜를 찾아내면 됩니다. 그러면
11, 15, 16, 18, 19 값이 나오져 그걸 조인하면 되는겁니다.
행운을 빌어요 ^^