곡할 노릇이네요.. 채택완료

9년 전 조회 5,217

리스트에서 검색 값을

 

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개

채택된 답변
+20 포인트

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

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

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

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


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

답변에 대한 댓글 4개

참고로 문자데이타유형필드에 "1,234", "2"로 되어있는 값의 sum을 계산하면 3이 나옵니다.
감사합니다..덕분에 나에 오늘 하루를 구했습니다.ㅎ
쿼리를 다음처럼 변경해보세요.
[code]select sum(replace(wr_16, ',', '')) as total_aaa, sum(replace(wr_8, ',', '')) [/code]
알려주신 리플레이스로 하니 깔끔하게 해결되었습니다~ 전설의 루트님~~ㅎ
입력된 값을 db에서 몽땅 컴마 제거하는 방법을 뒤져볼려고 했는데...
제거할 필요는 없기 때문에 알려주신 방법으로 해결되었습니다. 좋은 하루되세요~

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

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

 

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

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

 

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

 

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

답변에 대한 댓글 1개

역시 고수님들은 구문이상유무를 즉시 판별하시는군요,,ㅋ
감사합니다..덕분에 나에 오늘 하루를 구했습니다.ㅎ

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

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

 

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

 

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

 

 

 

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

답변에 대한 댓글 2개

관심 감사합니다~
조건은 동일한데 너무 이상해서 다시 디비 확인해보니..wr_16은 천단위 컴마가 들어가 저장되어 있네요..
감사합니다..덕분에 나에 오늘 하루를 구했습니다.ㅎ

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

정확한 사정은 모르겠지만

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

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

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

답변에 대한 댓글 2개

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

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

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

로그인
🐛 버그신고