1

私はクエリを持っています:

SELECT MONTH(tgl) AS month, SUM(jumlahA) AS A, SUM(jumlahB) AS B
FROM tabel where YEAR(tgl)='2002' GROUP BY MONTH(tgl) order by 1;

結果は次のとおりです。

month   A       B
----------------------
1       85      0
2       38      0
9       34      23

問題は、月がデータを持たない PHP で 1 年 (12 か月) のデータを完全に表示する方法です。A と B に 0 を入れます。実際には、月軸 (1 月、2 月、...、des )

アップデート

ここに私のPHPコードの一部があります:

echo "<categories>\n"; 
    echo "<category name='Jan' />\n"; 
    echo "<category name='Feb' />\n"; 
    echo "<category name='Mar' />\n"; 
    echo "<category name='Apr' />\n"; 
    echo "<category name='Mei' />\n"; 
    echo "<category name='Jun' />\n"; 
    echo "<category name='Jul' />\n"; 
    echo "<category name='Agu' />\n"; 
    echo "<category name='Sept' />\n"; 
    echo "<category name='Okt' />\n"; 
    echo "<category name='Nop' />\n"; 
    echo "<category name='Des' />\n"; 
echo "</categories>\n";

echo "<dataset seriesname='Hulu' color='AFD8F8'>"; 
$strQuery="SELECT MONTH(tgl) AS month, SUM(jumlahA) AS A, SUM(jumlahB) AS B FROM tabel where YEAR(tgl)='2002' GROUP BY MONTH(tgl) order by 1"; 
$hasil=mysql_query($strQuery); 
while ($data = mysql_fetch_array($hasil)) { 
    echo "<set value='".$data[1]."' />"; 
} 
echo "</dataset>";
4

1 に答える 1

1

から返さarrayれるのと同じ値で を作成しMONTH(tgl) AS monthます。これらの値がカテゴリと同じであると仮定すると (そうでない場合は変更してもかまいません)、次のようにします。

$months = array('Jan'=>null, 'Feb'=>null, 'Mar'=>null, 'Apr'=>null, 'Mei'=>null, 
'Jun'=>null, 'Jul'=>null, 'Agu'=>null, 'Sept'=>null, 'Okt'=>null, 'Nop'=>null, 'Des'=>null); 

良い。これを次のように変更しますwhile

while ($data = mysql_fetch_array($hasil)) { 
    $months[$data[0]] = "<set value='".$data[1]."' />"; 
} 

さて、配列では、それぞれの値を持つすべての月を取得しました。値のない月はNULLs です。今では簡単です:

foreach ($months as $month) {
    if ($month) {
        echo $month;
    }
    else {
        echo "<set value='0' />";
    }
}

これは私の頭から出てきたもので、テストしていません。うまくいくことを願っています!

于 2013-09-19T17:54:11.503 に答える