최신글 랜덤 겹치지 않고 뽑는법? 정보
최신글 랜덤 겹치지 않고 뽑는법?본문
탭으로 한개의 게시판에서 순차적으로 게시물을 뽑아오는데.. 지금의 경우 wr_id로 순차적으로 쭉 뽑아와서 첫탭 ,두째탭, 셋째탭에 뿌려줍니다.
예를들어 7개를 하나의 탭에서 뿌려주면 21개를 불러와 7개씩 뿌려주는데요..
21개를 한번에 랜덤으로 불러와서 7개씩 뿌려주고 싶습니다.
order by rand() 를 사용하면 7개내에서만 섞이고 하나의 탭에서만 바뀌게 됩니다.
그렇다고 limit 를 21개로 불러와버리면 3개탭중 중복되는것이 껴버립니다.
중복없이 21개를 3개의 탭에 나눠서 뿌려주려면 어떻게 해야할까요? 이리저리 해봐도 해결하지 못해 도움 부탁드려봅니다.
<div id="side_list1_tab1" style="display:inline;">
// 출력갯수
$rows = "7";
....
$sql = " * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit 0, $rows ";
....
</div>
<div id="side_list1_tab2" style="display:inline;">
// 출력갯수
$rows = "7";
....
$sql = " select * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit $rows, $rows ";
....
</div>
<div id="side_list1_tab3" style="display:inline;">
// 출력갯수
$rows = "7";
....
$sql = " * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit ".(int)($rows * 2).", $rows ";
....
</div>
예를들어 7개를 하나의 탭에서 뿌려주면 21개를 불러와 7개씩 뿌려주는데요..
21개를 한번에 랜덤으로 불러와서 7개씩 뿌려주고 싶습니다.
order by rand() 를 사용하면 7개내에서만 섞이고 하나의 탭에서만 바뀌게 됩니다.
그렇다고 limit 를 21개로 불러와버리면 3개탭중 중복되는것이 껴버립니다.
중복없이 21개를 3개의 탭에 나눠서 뿌려주려면 어떻게 해야할까요? 이리저리 해봐도 해결하지 못해 도움 부탁드려봅니다.
<div id="side_list1_tab1" style="display:inline;">
// 출력갯수
$rows = "7";
....
$sql = " * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit 0, $rows ";
....
</div>
<div id="side_list1_tab2" style="display:inline;">
// 출력갯수
$rows = "7";
....
$sql = " select * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit $rows, $rows ";
....
</div>
<div id="side_list1_tab3" style="display:inline;">
// 출력갯수
$rows = "7";
....
$sql = " * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit ".(int)($rows * 2).", $rows ";
....
</div>
댓글 전체

select * from (
select * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit 0, 21)A order by rand() limit 7
이런식으로 괄호를 하나 더 싸서 랜덤으로 7개만 뽑으시면 됩니다.
참고로 위의 쿼리는 4.5인가 5.X 버전에서만 될껄요~
select * from {$g4[write_prefix]}{$tmp_table} where wr_is_comment = '0' order by wr_id desc limit 0, 21)A order by rand() limit 7
이런식으로 괄호를 하나 더 싸서 랜덤으로 7개만 뽑으시면 됩니다.
참고로 위의 쿼리는 4.5인가 5.X 버전에서만 될껄요~

21개 rand 로 한번에 불러와서 7 개씩 나누어서 뿌려주면 되지 않나요?
아무래도 제가 문제를 이해하지 못하는 듯 하네요.. ^^;
아무래도 제가 문제를 이해하지 못하는 듯 하네요.. ^^;

최근 21개중 랜덤으로 7개 뽑아 오는거 같은데...
저도 그래서 그렇게 답을 했는데...
아닐까요??
저도 그래서 그렇게 답을 했는데...
아닐까요??

아, 그렇군요.. :-). 설명 감사합니다.
그런데,그렇다면 3 개의 탭으로 7개씩 랜덤으로 분배해야 할텐데,
꼬을님읩 방법을 3 번 쓰면 겹치지 않나요?
21개 배열에 받아놓은 후, shuffle 함수써서 순서를 섞어놓은 후
역시 7개씩 나누어서 탭으로 뿌려지는 것은 어떨까요?
그런데,그렇다면 3 개의 탭으로 7개씩 랜덤으로 분배해야 할텐데,
꼬을님읩 방법을 3 번 쓰면 겹치지 않나요?
21개 배열에 받아놓은 후, shuffle 함수써서 순서를 섞어놓은 후
역시 7개씩 나누어서 탭으로 뿌려지는 것은 어떨까요?
전진님 말씀대로 3개택으로 7개씩 랜덤으로 뿌려주는것을 원합니다. 21개를 불러와서 3개에서 뿌려주면 겹치는터라.. shuffle 함수써서 순서를 섞어놓은 후
역시 7개씩 나누어서 탭으로 뿌려지는 것은 어떻게 해야할까요?
역시 7개씩 나누어서 탭으로 뿌려지는 것은 어떻게 해야할까요?