2012-09-04 6 views
2

나는 다음과 같은 테이블이 :PHP SUM 함수

id q_id   value 
------------------------ 
1  2   5 
2  2   NULL 
3  2   5 
4  2   NULL 
5  4   2 
6  4   NULL 
7  4   2 
8  4   NULL 

내가 원하는 (예를 들어) 모든 값 where q_id = 2

$sq = mysql_query("SELECT SUM(value) AS sum FROM table WHERE q_id = 2)or die(mysql_error()); 
    while($row = mysql_fetch_array($sq)){ 
    $sum = $row['sum']; 
    } 
    echo $sum."<br>"; 

의 합계를 얻을 것입니다하지만 난

받고 있어요
5 
5 

하지만 원하는 것은 값의 합계이고 대신 10을 기대합니다.

도움 주셔서 감사합니다.

+1

[사용 중단 프로세스] (http://news.php.net/php.internals/53799)에서와 같이 mysql_ * 함수 사용을 중단하십시오. [더 나은 PHP 개발자가 되십시오] (http://jason.pureconcepts.net/2012/08/better-php-developer/). –

+3

"GROUP BY"는 어디에 있습니까? –

+1

게시 한 코드에 구문 오류가 있으며 표시 한 쿼리는 지정한 결과를 생성하지 않습니다. 네가 우리에게 보여주는 것을 실제로하고 있다고 생각하지 않는다. –

답변

1

, 왜 그냥

SELECT value FROM table WHERE q_id=2

다음 while 루프를 사용하는 값을 요약 사용할 수 있습니까? 같은 뭔가 :

while($row = mysql_fetch_array($sq)) {     $sum += $row['value']; } echo $sum."<br>";

편집 : 제이슨 맥 크리 어리는 위에서 말했듯 또한, 데이터베이스 쿼리의 다른 방법으로 보일 것입니다. 필자는 php.net에서 "PDO"를 검색하는 것이 좋습니다. 사용하기 쉽습니다.

-1

쿼리에 GROUP BY를 추가해야합니다.

GROUP BY q_id 
+0

아마도 - 그룹을 삭제 하시겠습니까? 그는 이미 그룹을 가지고 있고 그 반대 결과를 원하는 것처럼 이미 결과를 얻는다. –

+0

이것은 WHERE q_id = 2가있는 MySQL에서는 필요하지 않다. 대답을 게시하기 전에 – eggyal

+0

누구든지 댓글을 읽습니까? :-) –

0

이 그것을 ... 당신은 value를 표시하는 사용 해보세요 끝에 다음을 추가, 코드에서 인용 누락이 있었다. 어쨌든 결과 세트를 반복 할 거라면

$sq = mysql_query("SELECT SUM(value) AS sum FROM `table` WHERE `q_id` = '2'")or die(mysql_error()); 

    while($row = mysql_fetch_assoc($sq)) 
    { 
    $sum = $row["sum"]; 
    } 

    echo $sum . "<br>"; 
0
$sq="SELECT value FROM table WHERE q_id='".$am."'"; 
$result=mysqli_query($link,$sq); 
while($row=mysqli_fetch_assoc($result)) { 
$sum += $row['value']; 
    } 
echo "<p>Sum:&nbsp;".$sum."</p><br>"; 
//$am ='2'; 
//$link -- connection to the data base 

선택 문 앞에 $am ='2'; 넣어주세요 또한 당신이 $link

당신은 내가 테스트 한 q_id

의 값에 따라 총 합계를 얻을 것이다 사용하여 데이터베이스에 연결했는지 확인 코드와 잘 작동합니다.