2009-06-06 7 views
1

J'ai un peu de mal à trouver comment afficher le nombre total de ventes effectuées sur mon site Web. Je n'ai aucun problème à travailler avec une seule sortie d'une table, mais malheureusement, pour mon site web, les résultats des ventes totales sont répartis sur 2 tables dans la base de données.Affichage d'un total cumulé sur mon site Web?

Je reçois normalement le total des ventes manuellement en utilisant une requête Union en SQL (quand j'ai envie de le vérifier). J'essaye de concevoir un moyen d'afficher le chiffre total sur mon site Web comme un nombre simple formaté avec des virgules pour des milliers. Jusqu'à présent, j'ai réussi à créer un code qui affiche le total de chaque table comme une figure distincte. En dehors des 2 figures séparées, c'est parfait. Tout ce que je dois faire est de joindre les 2 lignes de sortie en un seul chiffre. Le code que j'ai actuellement est ci-dessous:

$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(); 

Quelqu'un peut-il m'aider avec ce problème?

+0

Utilisez-vous MySQL, Oracle ou SQL Server? – Kane

+0

La première réponse à cette question de Cletus (en utilisant la variante du code PHP) a parfaitement fonctionné. Malheureusement, je n'ai pas la bonne réputation pour ajouter un vote à sa réponse, mais c'est la réponse qui a résolu mon problème. Merci pour la réponse rapide - Bunny – Bunny

Répondre

1

Il suffit de les ajouter:

$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>'; 

Sinon, il peut être fait dans une requête:

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' 
) 

Personnellement, je aimerais ajouter dans le code mais soit des œuvres.

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

Il semble que la seule chose qu'il vous reste à faire est de prendre la somme de ces valeurs.

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

Cela retournera un seul chiffre comme la somme des valeurs des deux tables.

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

Eh bien, peut-être, vous avez l'idée.

Questions connexes