Copy
$sql = "
select a.mb_id, b.mb_name, wr_12, count(*) as cnt , sum(a.wr_31) as tot
from {$write_table} a
left outer join {$g5['member_table']} b on a.mb_id = b.mb_id
where wr_29 between '{$stx1}' and '{$stx2}'
group by a.mb_id, b.mb_name ORDER BY tot DESC";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$list_name = explode('||',$row['wr_12']);
기간내에 포함되는 지난 모든 게시글의 wr_12값을 뿌려주고 싶은데..
저렇게 하니까 기간내 모든 wr_12값이 아닌 바로 이전 게시글의 wr_12값만 가져옵니다.
기간내 모든 wr_12값을 전부 뿌려줄려면 어떻게 해야 하나요?
답변 2개 / 댓글 10개
채택된 답변
+20 포인트
$sql = "
select a.mb_id, b.mb_name, group_concat( wr_12) wr_12, count(*) as cnt , sum(a.wr_31) as tot
from {$write_table} a
left outer join {$g5['member_table']} b on a.mb_id = b.mb_id
where wr_29 between '{$stx1}' and '{$stx2}'
group by a.mb_id, b.mb_name ORDER BY tot DESC";
음 저렇게 하시면 모든 기간내에 wr_12값 가져오실거 같은데..
나머지 게시글이 wr_29 값이 없거나, mb_id 가 없거나.. 조건에 맞지 않거나 하지 아닐까요..?
답변에 대한 댓글 10개
아.. 쿼리가 아예 잘못 됐네요...
혹시 멤버테이블을 조인한 이유가 있나요?
회원 한명당 하나만 불러오시나요?
그렇다면, wr_12는 그회원이 작성한 글중 어떤걸 기준으로 뽑으시나요?
아.. 기간내에 그회원이 작성한 모든글의 wr_12의 값인가요?
[code]
$sql = "
select a.mb_id, b.mb_name, wr_12, count(*) as cnt , sum(a.wr_31) as tot
from {$write_table} a
left outer join {$g5['member_table']} b on a.mb_id = b.mb_id
where wr_29 between '{$stx1}' and '{$stx2}'
group by a.mb_id, b.mb_name ORDER BY tot DESC";
[/code]
혹시 멤버테이블을 조인한 이유가 있나요?
회원 한명당 하나만 불러오시나요?
그렇다면, wr_12는 그회원이 작성한 글중 어떤걸 기준으로 뽑으시나요?
아.. 기간내에 그회원이 작성한 모든글의 wr_12의 값인가요?
[code]
$sql = "
select a.mb_id, b.mb_name, wr_12, count(*) as cnt , sum(a.wr_31) as tot
from {$write_table} a
left outer join {$g5['member_table']} b on a.mb_id = b.mb_id
where wr_29 between '{$stx1}' and '{$stx2}'
group by a.mb_id, b.mb_name ORDER BY tot DESC";
[/code]
그렇면... 제 짧은 지식으로는..
while문 안에서 쿼리를 한번더 돌리셔서, wr_12값을 찍어주는게 좋을거같아요!
분명히 더 좋고 빠른방법은 있겠지만.. 그건 다른분이 아마!
[code]
$sql = "
select a.mb_id, b.mb_name, count(*) as cnt , sum(a.wr_31) as tot
from {$write_table} a
left outer join {$g5['member_table']} b on a.mb_id = b.mb_id
where wr_29 between '{$stx1}' and '{$stx2}'
group by a.mb_id, b.mb_name ORDER BY tot DESC";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$sql = "
select wr_12
from {$write_table}
where mb_id = {$row['mb_id']}
";
// 다시 반복문 써서 출력
$list_name = explode('||',$row2['wr_12']);
~~~~
[/code]
while문 안에서 쿼리를 한번더 돌리셔서, wr_12값을 찍어주는게 좋을거같아요!
분명히 더 좋고 빠른방법은 있겠지만.. 그건 다른분이 아마!
[code]
$sql = "
select a.mb_id, b.mb_name, count(*) as cnt , sum(a.wr_31) as tot
from {$write_table} a
left outer join {$g5['member_table']} b on a.mb_id = b.mb_id
where wr_29 between '{$stx1}' and '{$stx2}'
group by a.mb_id, b.mb_name ORDER BY tot DESC";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
$sql = "
select wr_12
from {$write_table}
where mb_id = {$row['mb_id']}
";
// 다시 반복문 써서 출력
$list_name = explode('||',$row2['wr_12']);
~~~~
[/code]
답변을 작성하려면 로그인이 필요합니다.
계속 테스트중인데.. 카운트도 맞고, 금액도 맞고.. 다 맞는데
wr_12값을 모두 못가져 옵니다.