2012-04-25 4 views
0

私はトラフィックなどのウェブサイトからの統計情報を格納するデータベースを作成しました。過去30日間に取得されたユニークなIPアドレスの数をデータベースに照会しようとしています。sql query date結果をフィルタリングする

SELECT COUNT(*) totalA FROM statistics GROUP by ipAddress 
AND DATE_SUB(CURDATE() ,INTERVAL 30 DAY) LIMIT 0, 30 

ただし、クエリはテーブルのデータエントリの数を返します。私はそれだけで日付フィルタリングは

をめちゃめちゃ厥ですので、任意のヘルプは、あなたがipAddress AND DATE_SUB(CURDATE(), INTERVAL 30 DAY)と、この上GROUP BYしているためです感謝

答えて

0

をいただければ幸い同じクエリマイナス日付フィルタを使用し、正しい結果を得ています式は2つのフィールドの間に論理ANDを生成します。これには2つの値しかありません。それでも、あなたは違いを気にせず、ただcount(*)を要求します。あなたはおそらく欲しい

は次のとおりです。私は、これはあなたが探しているものである

SELECT ipAddress, DATE_SUB(CURDATE(), INTERVAL 30 DAY), COUNT(*) AS totalA 
    FROM statistics 
GROUP by ipAddress, DATE_SUB(CURDATE(), INTERVAL 30 DAY) 
LIMIT 0, 30 
0

と思います。基本的には、あなたの日付コードをWHERE句に入れてテーブルの日付列と比較します。明らかに、あなたの日付列の名前が何であれ、 "entryDate"を変更する必要があります。

SELECT COUNT(*) AS totalA 
FROM statistics 
WHERE entryDate >= DATE(CURDATE()-INTERVAL 30 DAY) 
GROUP BY ipAdress 
関連する問題