0

私はこれに問題があり、回避策を見つけることができません。どんな助けでも大歓迎です。

PostDate という名前の一連の列を持つテーブルがあります。見やすくするためにテーブルとして出力している次の配列が含まれています。

PostDate
0000-00-00
2013-01-08 
2013-01-10 
2013-01-11 
2013-01-15 
2013-01-16 
2013-01-18 
2013-01-18 
2013-01-18 
2013-01-19 
2013-01-19 
2013-01-23 
2013-01-23 
2013-01-24 
2013-01-26 
2013-01-29 
2013-01-29 
2013-01-29 
2013-01-30 
2013-01-31 
2013-01-31 
2013-02-01 
2013-02-02 
2013-02-02 

コードはこれです。

$scorequerymonth=
   "SELECT PostDate 
    FROM tablename 
    WHERE AgentID=$agent 
    ORDER BY PostDate"; 

$scoreresultmonth=mysql_query($scorequerymonth, $scoreconnection) or die('Could not connect agent: ' . mysql_error());


$scoretotwos=mysql_num_rows($scoreresultmonth);
echo "<br>";
echo "scoretotwos: " . $scoretotwos;  
echo "<br>";

echo "<table border='1'><tr>";

for($i = 0; $i<mysql_num_fields($scoreresultmonth); $i++)
{
echo "<th>".mysql_field_name($scoreresultmonth, $i)."</th>";

}
echo "</tr>";

while($row = mysql_fetch_array($scoreresultmonth))
{

    echo "<tr>";
    for($i = 0; $i < mysql_num_fields($scoreresultmonth); $i++)
    {

        echo "<td>". $row[$i] ."</td>"; 

    }   
    echo "</tr>";

    }
echo "</table>";
echo "<br>";

私が達成したいのは、1月、2月などの行数を区切ることです...このクエリを試しましたが、月の01、02しか得られません。

$scorequerymonth=
    "SELECT DATE_FORMAT(PostDate, '%m') 
     FROM tablename 
     WHERE AgentID=$agent 
     ORDER BY PostDate";

私が知りたいのは、誰かが 01 または 02 またはその他の月だけを見つけたり、serperate する方法と、存在する行の数を教えてくれるかどうかです。

基本的に、その月の行の総数だけが必要です。

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

0

あなたはほとんどそこにいました。句を追加し、集計を返す必要がありますGROUP BY(たとえばCOUNT(1)、 or SUM(1)):

SELECT DATE_FORMAT(t.PostDate,'%m') AS post_month
     , COUNT(1) AS count_for_post_month
  FROM tablename t
 WHERE t.AgentID=$agent
 GROUP BY post_month

日付値から '01','02' のみを返すことにより、複数の年がそれぞれの年に結合されることに注意してください。たとえば、'01' の「count」には、すべての年の 1 月からの一致する行の数が含まれ、すべて一緒に結合されます: '2011-01','2012-01','2013-01'

通常のパターンでは、年を含めて、特定の暦月のカウントを取得します。

SELECT DATE_FORMAT(t.PostDate,'%Y%m') AS post_yyyymm
于 2013-02-06T20:45:04.817 に答える