0

今月の 3 つのキャンペーンの合計を折れ線グラフで表示しようとしています。現在、JSON の結果は、正しい結果で毎日各キャンペーンを表示していますが、毎日 3 つです。元の SQL ステートメントに SUM を追加できません。これは、1 か月全体の合計ではなく、当月の毎日の結果の合計が必要なためです。

間違っている場合は訂正してください。ただし、これはwhileループで行う必要があると思います。私はまだPHPを学んでいて、解決策が思いつきません。個々のキャンペーンを探して、結果を変数に設定するループにいくつかif, else ifの条件を追加しようとしましたが、変数を追加して変数を置き換えるために使用しましたが、役に立ちませんでした。while$monthlySEMClicksJSON

どうすればこれを達成できますか?

    // Current Month JSON
$monthQueryResultJSON = "SELECT * FROM AdWords_Reporting WHERE CampaignID IN('CAMP008', 'CAMP011', 'CAMP044') AND AveragePosition != '0' AND YEAR(date) = YEAR(NOW()) AND MONTH(date) = MONTH(NOW()) ORDER BY Date ASC";
$monthlyResultJSON = mysql_query($monthQueryResultJSON) or die(mysql_error());

$monthlySEMClicksJSON = '';
$monthlySEMImpressionsJSON = '';
$monthlySEMDateJSON = '';
$printClicksMonthlySEM = '';
$printToolTipMonthlySEM = '';
$printImpressionsMonthlySEM = '';
while($singleRowMonth = mysql_fetch_array($monthlyResultJSON)){
    $monthlySEMClicksJSON = $singleRowMonth['TotalClicks'];
    $monthlySEMImpressionsJSON = $singleRowMonth['TotalImpressions'];
    $monthlySEMDateJSON = $singleRowMonth['Date'];
    $printClicksMonthlySEM .= json_encode($monthlySEMClicksJSON).",";
    $printImpressionsMonthlySEM .= json_encode($monthlySEMImpressionsJSON).",";
    $printToolTipMonthlySEM .= json_encode("<b>Date:</b> " .$monthlySEMDateJSON . "<br /><b>Total Impressions:</b> " . $monthlySEMImpressionsJSON . "<br /><b>Total Clicks:</b> " .$monthlySEMClicksJSON).",";      
}
4

1 に答える 1

2

SQL の日付を月にフォーマットします。つまり'Ym'、これを集計します。

SELECT 
sum(field1) as sfield1, sum(field2) as sfield2, date_format(date, '%Y%m') as dateaggregate 
FROM AdWords_Reporting WHERE CampaignID IN('CAMP008', 'CAMP011', 'CAMP044') 
AND AveragePosition != '0' AND YEAR(date) = YEAR(NOW()) AND MONTH(date) = MONTH(NOW()) 
Group by dateaggregate 
ORDER BY Date ASC"

(これはテスト済みの SQL ではありません。単なるヒントです!)

結果: 1 か月あたりの集計値。これは、年、月、週、四半期などの任意の時間枠に簡単に変更できます。

その上、「日付」はSQLの予約語であり、このような名前の列はお勧めできません。

于 2013-05-28T16:24:08.980 に答える