sql에서 비교구문 질문... 채택완료
</p>
<p> select a.mb_id, b.mb_name, wr_21, 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</p>
<p>
wr_29의 날짜안에 wr_31의 값을 더해서 순위를 정하는 소스입니다.
여기서 본인의 wr_10의 값과 동일한 값만 뽑고 싶은데 이건 어떻게 해야 하나요?
left outer join {$g5['member_table']} b on a.wr_10 = b.wr_10
이렇게 하면 될줄 알았는데 아무런 값도 안나오네요...
답변 3개
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
</p>
<pre>
<code>select a.mb_id, b.mb_name, wr_21, 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></pre>
<p>
이코드가 현재 정확히 동작한다면 아래 내용을 확인해야합니다
1. 본인의 wr_10값과 동일한 값만 뽑아내고자 합니다 <= 이게 member 테이블의 wr_10 값과 write_table 의 wr_10 값이 동일한 것만 뽑아내려고 한다는 의미인가요 ?
그렇다면
</p>
<pre>
<code>select a.mb_id, b.mb_name, wr_21, 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 and a.wr_10= = b.wr_10
where a.wr_29 between '{$stx1}' and '{$stx2}'
group by a.mb_id, b.mb_name ORDER BY tot DESC</code></pre>
<p> </p>
<p>
이렇게 해보세요
답변에 대한 댓글 1개
뒤에
and a.wr_10 = b.wr_10을 추가해봤으나
값이 아무것도 안나옵니다.
댓글을 작성하려면 로그인이 필요합니다.
날짜 데이터를 제대로 모르겠고 최근 오라클만 써봐서 헷갈린데
저 쿼리를 db 툴에서 돌려보셨나요? 아마 신택스 에러 떳을거같은데,,
날짜쪽 sum에서 오류날거같은데요? 그누쪽에서 날짜가 어떻게 들어갈진 모르겠으나
보통 2000-xx-xx 00:00 나 2000.00.00 00:00 이런식으로 들어갈텐데 sum 함수 안먹을겁니다
정규표현식으로 특수문자 제거를 하시던지 리플레이스로 특수문자만 제거해서 해보세요
답변에 대한 댓글 7개
select a.mb_id, b.mb_name, wr_21, 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_10값과 동일한 값만 뽑아내고자 합니다.
이 구문을 넣으면 아무것도 안나옵니다.
on a.mb_id = b.mb_id 이걸 wr_10으로 바꿔도 아무것도 안나오고...
제가 초보라... ㅠㅠ
select a.mb_id, b.mb_name, wr_21, 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
이게 기존 쿼리에요??
여기서 on 절에
left outer join {$g5['member_table']} b on a.mb_id = b.mb_id and a._wr_10 = b.wr_10 이렇게 넣으면 데이터가 아무것도 없다 이 말씀인지
신택스 에러가 떳는지를 확인을 못하시니..
write_table 테이블에 wr_10 컬럼에는 값은있나요?
기존쿼리가 댓글에 적어놓은 쿼리입니다.
이상없이 순위와 합계금액이 잘 나오고 있습니다.
여기에서 wr_10값이 같은 것만 뿌려주고 싶어서
and a.wr_10 = b.wr_10 을 넣으니 아무런 값도 나오지 않습니다.
wr_10값은 서울, 부산, 광주 이렇게 다들 잘 들어가 있습니다.
데이터 구성이 어떻게 되있는지 제가 상상해서 그릴수도없는 노릇이라 대충 흉내만 한번 내봤는데
join 에서 일치값이 없어서 그런거라고 밖에 말씀을 못드릴거같네요
으로 찍어보면 각각 wr_10 값이 잘 나오고 있습니다....
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
값이 아무것도 안나오더라구요.. ㅠㅠ