0

トラフィックなどの Web サイトからの統計を格納するデータベースを作成しました。過去 30 日間にキャプチャされた一意の IP アドレスの数をデータベースに問い合わせようとしています。

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

ただし、クエリはテーブル内のデータ エントリの数を返すだけです。日付フィルターを除いた同じクエリを使用して正しい結果を得たので、日付フィルターがめちゃくちゃになっているだけです

助けていただければ幸いです

4

2 に答える 2

0

これは、あなたがにいるためGROUP BYであり、この式は2つのフィールド間ipAddress AND DATE_SUB(CURDATE( ), INTERVAL 30 DAY)の論理を生成します。これには2つの可能な値しかありません。ANDそれでも、あなたは区別を気にせず、ただ要求し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
于 2012-04-25T12:56:41.673 に答える
0

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

SELECT COUNT(*) AS totalA
FROM statistics
WHERE entryDate >= DATE(CURDATE()-INTERVAL 30 DAY)
GROUP BY ipAdress
于 2012-04-25T12:56:45.200 に答える