2015-02-04 4 views
0

숫자가있는 여러 열이있는 DB에 테이블이 있습니다. 내 DB의 각 열에있는 모든 행에 대해 별도의 합계를 가진 1 개의 쿼리에서 모든 행을 쿼리하려고합니다. 나는이 같은 단일 컬럼 쿼리와 함께 할 때와 같은MYSQL에서 한 번에 여러 합계 쿼리 PHP

그렇게

$sql = ' 
SELECT sum(TOTAL1) 
    , sum(TOTAL2) 
    , sum(TOTAL3) 
    , sum(TOTAL4) 
    FROM TABLE WHERE ID = '.$ID.''; 

그것을 작동합니다.

$sql = 'SELECT sum(TOTAL1) FROM TABLE WHERE ID = '.$ID.''; 

하지만 누군가가이 일을 대신 별도의 쿼리에 더 적절한 방법을 알고 않는 한 쿼리에서 배수를 위해 작동하도록 얻이 수없는 것?

+1

별칭을 사용하십시오.'SELECT sum (TOTAL1) as total1, sum (TOTAL2) as total2' 등. 아마도'SELECT sum (TOTAL1 + TOTAL2 + TOTAL3) '과 같은 것일 수도 있습니다. –

+0

별칭을 사용하면 저에게 잘 작동합니다. 8-) 왜 내가 그걸 시도하지 않았는지 모르겠다. 프레드 감사합니다. – Nato

+0

열 (x1, x2, x3 등)을 열거하면 언제든지 디자인에 잘못된 점이 있음을 알 수 있습니다. – Strawberry

답변

0
$sql = 'SELECT (sum(TOTAL1)+sum(TOTAL2)+sum(TOTAL3)+sum(TOTAL4)) AS FINALTOTAL FROM TABLE WHERE ID = '.$ID.''; 
+0

모든 행의 각 열에서 총 개수가 필요합니다. – Nato

0

별칭을 사용하십시오.

(!) 참고하십시오 내가 아래 한 예를 테스트하는 WHERE 절을 추가.

SELECT sum(TOTAL1) as total1, sum(TOTAL2) as total2 

별도의 별칭을 사용하려는 경우 다른 엔티티로 에코하려는 경우 편리합니다.

:

$query = mysqli_query($con, "SELECT SUM(col1) as total1, 
     SUM(col2) as total2, 
     SUM(col3) as total3 FROM table "); 

while($row = mysqli_fetch_array($query)){ 

    echo $row['total1']; // echo'd 125 

    echo "<br>"; 

    echo $row['total2']; // echo'd 225 

    echo "<br>"; 

    echo $row['total3']; // echo'd 2000 

} 

(!) 참고는 :

  • COL1 2 행 (25), 100
  • 2 행 25
  • COL2가 200
  • COL3 : 내 세 개의 열은 다음을 포함 2 행에서 1000,

모든 행의 총 예를 들어 반향 : (그리고 while 루프 내부)

$total = $row['total1'] + $row['total2'] + $row['total3']; 

echo $total; 

을 또는 한 번에 하나의 별명과 하나의 행 echo'd 등 :

SELECT sum(TOTAL1 + TOTAL2 + TOTAL3) as total FROM table 

즉 :

$query = mysqli_query($con, "SELECT SUM(col1 + col2 + col3) as total FROM table "); 

while($row = mysqli_fetch_array($query)){ 

    echo $row['total']; 

} 
+0

나는 이것을 시험해 보았지만, 문제가 여전히 두 번째 이상의 모든 행을 제외하고는 모두 제 2의 합계()와 같은 결과를 보이고 있다는 것을 제외하고는 효과가있는 것 같다. 이상한 글리치. – Nato

+0

@Nato 이제 행을 더 파헤쳐 야 할 것이다. 나는 내 대답을 게시하지 않았을 것이다. 직접 테스트하지 않아도됩니다. 데이터가 정수이고/또는 쉼표/​​점을 포함하는 경우 열 유형이 무엇인지 확인하십시오. 5.000 (5000)을 의미하는 경우, 5,000 또는 5.000입니다. –

+0

그들은 모두 정수이며 내 열은 정수입니다. 문제는 열을 가로 지르는 숫자를 복제한다는 것입니다. 각 열에 대해 합계가 필요합니다. – Nato

0

참고 : 데이터 형식은 쿼리는 SUM을 가질 수 다음으로 합계를 원하는 모든 필드에 동일해야합니다 (필드 1) + SUM (FIELD2) + SUM (FIELD3) ..... n은 1에서 단일 필드 난 그냥이 필드이 쿼리를 사용하고 모두

참조 정수이 내 테이블 정의

create table `siso_area_operativa` (
    `id_area_operativa` int , 
    `area_operativa` varchar (8), 
    `responsable` int 
); 

이며, 이것은 당신이의

SELECT SUM(a.field1) FROM 
    (
    SELECT 
    SUM(id_area_operativa) field1 
    FROM 
    siso_area_operativa 
    UNION ALL 
    SELECT SUM(responsable) field1 
    FROM 
    siso_area_operativa) AS a 

결과가 SUM입니다 원하는 쿼리입니다 (id_area_operativa) + 단일 필드에서의 SUM (응답 가능)

ENJOY !!!!!!!!!!!!

+0

이것은 흥미 롭다, 나는 이것을 오늘 오후에 시도 할 것이다. – Nato

+0

이것은 모든 칼럼에 대한 전체 카운트를 제공했습니다. 각 개별적으로 카운트가 필요합니다. 참고 :이 모든 일이 일어나고있는 동안 나는 또한 함수에 의해 그룹을 사용하고 있습니다. – Nato

+0

@Nato 당신이 사용하기를 원하는 마지막 질문을 내게 맡길 수 있습니까? –

관련 문제