곡할 노릇이네요..

곡할 노릇이네요..

QA

곡할 노릇이네요..

본문

리스트에서 검색 값을

 

if ($sca || $stx || $t_start || $t_end){

if( strpos($sql_search, 'where')===false) $sql_search =' where '.$sql_search;

$sql = " select sum(wr_16) as total_aaa, sum(wr_8) as total_bbb from $write_table  $sql_search ";

}else{

$sql = " select sum(wr_16) as total_aaa, sum(wr_8) as total_bbb from $write_table ";

}


이렇게 했구요,,물론 제가 한게 아니그,ㅋ 고수께서,,ㅎ

$drow = sql_fetch($sql);
$total_aaa = number_format($drow['total_aaa']);
$total_bbb = number_format($drow['total_bbb']);

이렇게 한뒤

<?php echo $total_aaa?>  <?php echo $total_bbb?>이렇게 하였더나

뒤에 bbb는 검색된 결과의 합계가 2,544,676 이런식으로 정확하게 나오는데
aaa는 이상하게 뒤에 3자리는 짤리고 1,323이렇게만 나오네요
즉 천단위 이상부분에 대해서만 합산되어 나온다는 겁니다.

db에 보니 aaa든 bbb든 1,333,445 이런식으로 잘 들어가 있는데요...
곡할 노릇입니다. 유유

이 질문에 댓글 쓰기 :

답변 4

wr_8과 wr_16 필드의 데이터유형이 숫자형인지 문자형인지 확인부터 해보세요.

숫자형이라면 모두 정상적으로 나와야 하는 사항인데....

문자형이라면 3자리 이상의 데이타에 ","가 들어가 있는지 확인해보십시오. 

문자형 데이타 필드에 숫자형값을 넣은 상태에서 ","가 들어가 있으면 정상적으로 sum이 되지 않습니다.


알려주신 리플레이스로 하니 깔끔하게 해결되었습니다~ 전설의 루트님~~ㅎ
입력된 값을 db에서 몽땅 컴마 제거하는 방법을 뒤져볼려고 했는데...
제거할 필요는 없기 때문에 알려주신 방법으로 해결되었습니다. 좋은 하루되세요~

구문상의 잘못된 부분은 없어보입니다.

 

wr_1 ~ wr_10 그누보드에 기본으로 설정된 필드고 데이타는 문자열인 varchar 형으로 되어있습니다.

wr_16 은 사용자가 임의로 생성한 필드인데요. 일단 데이타 타입부터 확인해보세요.

 

만약 mysql 에 데이타타입이 varchar 인상태에서 1,234,567 이렇게 들어있으면 이건 문자열이기 때문에 sum을 하게 되면 첫번째 , 이후는 무시가 됩니다. 1,234,567이 1로 되는거죠.

 

결과만 봐서는 모를듯요, sum 구문을  제외하고 나오는  sql 직접실행해보세요.

 

select wr_16 as total_aaa,  wr_8 as total_bbb from 테이블명

 

그리고 출력되는 wr_16 의 결과 행들을 보세요. 합산값이 맞는지요.

 

 

 

정확한 사정은 모르겠지만

더하기 계산에서 문제가 생겼다면 혹시 형변환(Data Type Cast)에 문제가 있을 수 있으니

$total_aaa = number_format((int)$drow['total_aaa']);로 테스트해 보세요. 

감사합니다~ 그런데 역시 마찬가지네요,,,
내용이나 조건은 동일한 상황인데 뒤에 거는 잘되는데 앞에거는 잘린상태에서 합산되는지 모르겠어요,,ㅋ
실력은 앙되그..미티.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,497 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT