테스트 사이트 - 개발 중인 베타 버전입니다

sql에서 비교구문 질문... 채택완료

밀랍 4년 전 조회 1,924

</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개

채택된 답변
+20 포인트
4년 전

on 

a.mb_id = b.mb_id and a.wr_10 = b.wr_10

 

이렇게 하면 되지않을가요??

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

밀랍
4년 전
and 해서 넣어봤는데..
값이 아무것도 안나오더라구요.. ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

</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개

밀랍
4년 전
on a.mb_id = b.mb_id
뒤에
and a.wr_10 = b.wr_10을 추가해봤으나
값이 아무것도 안나옵니다.

댓글을 작성하려면 로그인이 필요합니다.

exception
4년 전

날짜 데이터를 제대로 모르겠고 최근 오라클만 써봐서 헷갈린데

저 쿼리를 db 툴에서 돌려보셨나요? 아마 신택스 에러 떳을거같은데,,

날짜쪽 sum에서 오류날거같은데요? 그누쪽에서 날짜가 어떻게 들어갈진 모르겠으나

보통 2000-xx-xx 00:00 나 2000.00.00 00:00  이런식으로 들어갈텐데 sum 함수 안먹을겁니다

 

 

정규표현식으로 특수문자 제거를 하시던지 리플레이스로 특수문자만 제거해서 해보세요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 7개

밀랍
4년 전
[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]
현재 이 소스로 회원들 순위를 매기고 있습니다.
값 또한 정상적으로 나오고 있습니다.

제가 질문을 잘못 한건지... 본인의 wr_10값과 동일한 값만 뽑아내고자 합니다.
의뢰자15
4년 전
쿼리가 안도는게 아니고 그냥 값이 null & '' 으로 나온다는 말이신가요?
밀랍
4년 전
and a.wr_10 = b.wr_10
이 구문을 넣으면 아무것도 안나옵니다.
on a.mb_id = b.mb_id 이걸 wr_10으로 바꿔도 아무것도 안나오고...

제가 초보라... ㅠㅠ
의뢰자15
4년 전
질문에 의도를 명확하게 이해하기가 어렵습니다..

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 컬럼에는 값은있나요?
밀랍
4년 전
맞습니다.
기존쿼리가 댓글에 적어놓은 쿼리입니다.
이상없이 순위와 합계금액이 잘 나오고 있습니다.

여기에서 wr_10값이 같은 것만 뿌려주고 싶어서
and a.wr_10 = b.wr_10 을 넣으니 아무런 값도 나오지 않습니다.

wr_10값은 서울, 부산, 광주 이렇게 다들 잘 들어가 있습니다.
의뢰자15
4년 전
테이블안에 값이있는지 부터 확인을 해보셔야될거같네요
데이터 구성이 어떻게 되있는지 제가 상상해서 그릴수도없는 노릇이라 대충 흉내만 한번 내봤는데
join 에서 일치값이 없어서 그런거라고 밖에 말씀을 못드릴거같네요
밀랍
4년 전
리스트에서 <?php echo $list[$i]['wr_10'] ?>
으로 찍어보면 각각 wr_10 값이 잘 나오고 있습니다....

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인