[wr_id IN 문의] latest로 게시물을 부르면, 자동으로 5,4,3,2,1 로 정열되어 버려요.
본문
안녕하세요. :)
latest 로 게시물을 where wr_id IN(1,5,3,2,4) 방식으로 불러오는데요.
출력순서를 1,5,3,2,4 그대로 하고싶은데,
자동으로 5,4,3,2,1 로 정열되어 버려요.
1,5,3,2,4 그대로 하려면 어떻게해야 되나요?
latest.lib 부분
$history ="1,5,3,2,4";
$sql = " select * from $tmp_write_table where wr_id IN($history) and wr_is_comment = 0 order by wr_num limit 0, $rows ";
답변 4
sql은 order by 를 이용해서 정렬을 합니다.
위의 구문은 order by wr_num 으로 되어있어서 wr_num 순으로 정렬된것입니다.
sql에서 원하시는 방법으로 정렬을 하실려면, 테이블에 별도의 정렬기준을 필드를 추가하신후
order by를 추가된 필드로 설정하셔야 합니다.
위처럼 하지 않으실려면, 1,5,3,2,4 순으로 하나씩 조회하셔서 출력하셔야 합니다.
위의 구문은 order by wr_num 으로 되어있어서 wr_num 순으로 정렬된것입니다.
sql에서 원하시는 방법으로 정렬을 하실려면, 테이블에 별도의 정렬기준을 필드를 추가하신후
order by를 추가된 필드로 설정하셔야 합니다.
위처럼 하지 않으실려면, 1,5,3,2,4 순으로 하나씩 조회하셔서 출력하셔야 합니다.
latest.lib 부분
$history ="1,5,3,2,4";
$sql = " select * from $tmp_write_table where wr_id IN($history) and wr_is_comment = 0 order by wr_num limit 0, $rows ";
order by 구문을 없애시면 됩니다.
odder by 구문을 넣을시, default 로 asc 가 적용되기 때문에 54321 로 자동 적용되는 것이구요,
desc 로 적용하면 12345 가 되겟지만,
sql 구문을 고쳐보면 다음과 같이 되겟죠
$sql = " select * from $tmp_write_table where wr_id IN($history) and wr_is_comment = 0";
>1,5,3,2,4 가 $history[0] $history[1] $history[2] $history[3] $history[4] 인데요.
>order by wr_num 대신 order by $history 식으로 구현 하는식의 방법으로는 안될까요?
>이런식으로 해결은 불가능 할까요?
$history[]에 wr_id를 가지고 있다면
$history[]를 만들때 제목도 넣어 두셨다가
별도의 조회 없이 $history[]를 출력하시는 것이 좋을 것 같습니다.
배열도 소팅이 가능하므로, 별도의 소팅이 필요하시면 다음 자료를 참고하세요.
http://docs.php.net/manual/en/array.sorting.php
>order by wr_num 대신 order by $history 식으로 구현 하는식의 방법으로는 안될까요?
>이런식으로 해결은 불가능 할까요?
$history[]에 wr_id를 가지고 있다면
$history[]를 만들때 제목도 넣어 두셨다가
별도의 조회 없이 $history[]를 출력하시는 것이 좋을 것 같습니다.
배열도 소팅이 가능하므로, 별도의 소팅이 필요하시면 다음 자료를 참고하세요.
http://docs.php.net/manual/en/array.sorting.php
$sql = " select * from $tmp_write_table where wr_id IN($history) and wr_is_comment = 0";
IN 구문을 사용하면, PK(기본키) 기준으로 자동정렬 된답니다..
구문을 잘 고쳐보세요
답변을 작성하시기 전에 로그인 해주세요.