2012-03-05 11 views
0

私はテーブルの詳細の行(列)(ID)をカウントし、最後の12ヶ月を表示しようとしています - これは12ヶ月間回転するのが理想です。現在の月と前の11が表示されます私は、次のしているが、それは何も返しません:最後の12ヶ月間の行数をカウントする - PHP SQL

$sql = "SELECT DATE_FORMAT(date, '%m') as 'month', 
COUNT(id) as 'total' 
FROM details 
GROUP BY DATE_FORMAT(date, '%m') 
"; 
$result = mysql_query($sql, $con); 

if (!$result) { 
    echo "DB Error, could not query the database\n"; 
    echo 'MySQL Error: ' . mysql_error(); 
    exit; 
} 

while ($row = mysql_fetch_assoc($result)) { 
    $row['month']. " = " .$row['total']. "<br />"; 
    } 

私は私に質問してくださいされていない場合、私は、自分自身を説明している願っています...探しのための

おかげで。

B.

+0

次を使用し、リターンエラーはありません! – user1250812

+0

質問が成功した場合、何もエコーされません... –

+0

Durrr - いつも分かりません - もう1つの質問私は過去12ヶ月だけに制限します。 – user1250812

答えて

0

あなたはMSSQLを使用している場合は、次のクエリを試してみてください(MySQL: Query to get all rows from previous monthから延長)MySQLの

SELECT 
    DATEADD(MM, DATEDIFF(MM, 0, date), 0) AS 'month', 
    COUNT(1) as 'total' 
FROM 
    details 
WHERE 
    date >= DATEADD(MM, DATEDIFF(MM, 0, date) - 12, 0) 
GROUP BY 
    DATEADD(MM, DATEDIFF(MM, 0, date), 0) 

WHERE句も

SELECT 
    DATE_FORMAT(date, '%m') as 'month', 
    COUNT(id) as 'total' 
FROM 
    details 
WHERE 
    YEAR(date) >= YEAR(CURRENT_DATE - INTERVAL 12 MONTH) 
AND MONTH(date) >= MONTH(CURRENT_DATE - INTERVAL 12 MONTH) 
GROUP BY 
    DATE_FORMAT(date, '%m') 
+0

おかげであるが、これは返します DBのエラー、データベースのMySQLのエラーを照会できませんでした:不正なパラメータ数を「DATEDIFF」 – user1250812

+0

ああネイティブ関数の呼び出しでは、あなたがMySQLの使用している場合次のリンクをクリックすると、開始されます:http://stackoverflow.com/questions/2090221/mysql-query-to-get-all-rows-from-previous-month – diaho

+0

ありがとう@diaho、私は理論を見ることができますが、取得することはできませんそれは私の例の中ではうまくいきます - オリジナルを新しいアップデートに合わせて編集できますか? – user1250812

関連する問題