리스트 페이지에서 정렬을
select idx, title from t_product where gtype = 1 and status = 1 order by title asc
이렇게 하고 있습니다.
츨력된 결과는
510 가자/육
1 갈근(각)토
455 갈근(편)토
422 갈화
717 감수
830 감초(신강)
529 감초(신강) 1kg.
4 감초(양외)
431 감초(양외)특
640 감초.(신강)초,炒
616 감초.(양외)초,炒
5 강활(토)
296 강활.(기원)
340 강황
342 개자(백개자)
644 건강(일)
710 건강[일,초秒]
8 건율(토)
800 건율(토) 1kg.
~
이렇게 출력된 리스트에서 갈화(idx 422번) 클릭해서 view 페이지로 갈경우
이전글에는 갈근(편)토, 다음글에는 감수 가 나와야 하는데요.
이런식으로 하니가 갈근(각)토, 와 가자/육 이 출력 됩니다.
어떤식으로 바꾸면 될까요?
이전글
select top 1 idx, title from t_product where gtype = 1 and status = 1 and idx < 422 order by TITLE asc
다음글
select top 1 idx, title from t_product where gtype = 1 and status = 1 and idx > 422 order by TITLE asc
Comment 5
-
이시우_301202
2017.07.05 14:47
-
죠리퐁
2017.07.05 15:22
죄송 합니다.
실제 데이타 말고 예시로 적다보니 그렇게 되었습니다.
본문 수정 하였습니다.
다시 한번 봐주세요.
-
죠리퐁
2017.07.05 15:28
기존에는 idx 로 정렬해서 인지 아래와 같이 했더니 문제가 없었는데요.
정렬 방식을 title 로 하다보니 방법이 안나와서요.
Select Min(idx) from t_product where gtype = 1 and status = 1 and idx > 422
Select Max(idx) from t_product where gtype = 1 and status = 1 and idx < 422
-
Terry
2017.07.05 16:07
Order by 를 title 로 준걸 봐서는
title 값 기준으로 이전,다음값을 판단하고자 함인듯한데요..
idx로 정렬하는건 의미가 없습니다.
기존의 idx 컬럼 역할을 할 수 있는 순번을 부여하시구
그 순번값에 따라서 이전,다음을 판별하시면 됩니다.
하기 쿼리 참고하세요.
---쿼리시작
Create Table #tblA
(
idx decimal(18,0) null
,title varchar(100) null
,rn decimal(18,0) null
)
Insert
Into
Select a.title
,Row_Number() Over(Order By a.title Asc) As rn
From 테이블 a
)
--이전글
Select
b.idx
,b.title
From #tblA a
Inner Join
tblA b
On a.rn = b.rn+1
Where a.idx = 422
--다음글
Select
b.idx
,b.title
From #tblA a
Inner Join
tblA b
On a.rn+1 = b.rn
Where a.idx = 422
-
죠리퐁
2017.07.05 16:20
고맙습니다.
Row_Number() 로 정렬 번호 를 미리 만들고 하면 되는군요.
정말 고맙습니다.
정렬은 TITLE로 하는데 이전글 다음글은 기준점이 IDX작고 크고로 하시고 TITLE로 정렬하시니 안되는거 같습니다.
gtype, status 값을 모두 1로 넣어도 정렬순서가 저렇게 나오지 않는데 원데이타를 다시 줘보세요