2009-06-06 3 views
1

내 웹 사이트를 거친 판매량을 표시하는 방법에 약간 문제가 있습니다. 하나의 테이블에서 하나의 출력으로이 작업을 수행하는 방법은 아무 문제가 없지만 불행히도 내 웹 사이트의 경우 총 판매 결과가 데이터베이스의 2 개 테이블에 분산되어 있습니다.내 웹 사이트에 누적 합계를 표시 하시겠습니까?

일반적으로 SQL에서 유니온 쿼리를 사용하여 수동으로 총 판매액을 얻습니다 (검사 할 때마다). 내 웹 사이트에 총 숫자를 수천 개의 쉼표로 구성된 단일 숫자로 표시하는 방법을 고안하려고합니다.

지금까지 각 테이블의 합계를 별도의 그림으로 표시하는 코드를 작성했습니다. 2 개의 별도 숫자와 별개로 이것은 완벽합니다. 필자가해야 할 일은 출력 2 행을 하나의 그림으로 결합하는 것입니다. 현재 가지고있는 코드는 다음과 같습니다.

$sql= "SELECT sum(price) AS total_price FROM `table_A` 
UNION ALL 
SELECT sum(price) AS total_price FROM `table_B`"; 
$res= mysql_query($sql); 
if (mysql_num_rows($res)>0) { 
    while ($row=mysql_fetch_array($res)) { 
echo '<h3>'.number_format($row["total_price"], 0).'</h3>'; 
    }; 
}; 
echo mysql_error(); 

누구든지이 문제를 해결할 수 있습니까?

+0

MySQL, Oracle 또는 SQL Server를 사용하고 있습니까? – Kane

+0

cletus에서이 질문에 대한 첫 번째 답변 (변형 PHP 코드 사용)은 완벽하게 작동했습니다. 불행히도 그의 대답에 투표를 추가하는 데는 정확한 명성이 없지만 이것이 내 문제를 해결 한 대답입니다. 신속한 답장을 보내 주셔서 감사합니다 - 토끼 – Bunny

답변

1

그냥 그들을 추가

$sql = <<<END 
SELECT sum(price) AS total_price FROM `table_A` 
UNION ALL 
SELECT sum(price) AS total_price FROM `table_B' 
END; 
$res = mysql_query($sql); 
if (!$res) { 
    die('Error: ' . mysql_error() . ' in query ' . $sql); 
} 
$total = 0; 
while ($row = mysql_fetch_array($res)) { 
    $total += $row[0]; 
} 
$total = number_format($total, 0); 
echo '<h3>Total Sales are $' . $total . '</h3>'; 

또는, 하나 개의 쿼리에서 수행 할 수 있습니다

SELECT SUM(total_price) FROM (
    SELECT sum(price) AS total_price FROM `table_A` 
    UNION ALL 
    SELECT sum(price) AS total_price FROM `table_B' 
) 

가 개인적으로 난 그냥 코드하지만 두 작품에 추가 할 것입니다.

1
SELECT sum(price) AS total_price FROM 
(SELECT price FROM table_A 
UNION 
SELECT price FROM table_B 
) 
0

이 값들의 합계를 취하는 것만 남았습니다.

$sum = 0; 
while ($row=mysql_fetch_array($res)) { 
    $sum += $row["total_price"] 
}; 
echo '<h3>'.number_format($sum, 0).'</h3>'; 
0

이렇게하면 두 표의 값 합계로 단일 숫자가 반환됩니다.

SELECT 
    (SELECT sum(price) AS total_price FROM `table_A`) + 
     (SELECT sum(price) AS total_price FROM `table_B`); 

글쎄, 아마도 당신은 아이디어를 얻을 수 있습니다.

관련 문제