2

MySQL データベースから毎日の平均訪問者数を計算する際に問題が発生しました。訪問者が実際の訪問者かボットかによって、自動的に 0 または 1 で埋められる列があります。私のクエリは次のようになります

SELECT
   COUNT( * ) / COUNT( DATEDIFF( NOW( ) , 
   SELECT * 
    FROM mw_visitors
    WHERE bot = 0
    ORDER BY ID ASC 
   LIMIT 1 ) )
FROM mw_visitors
WHERE bot = 0

しかし、うまくいきません。私の PHPMyAdmin は、「SELECT * FROM mw_visitors where bot = 0 ORDER..」の構文にエラーがあることを教えてくれます。Webで検索しましたが、適切なものが見つかりませんでした。

編集: 構造http://pastebin.com/dm4Hjukr 実際の人間の訪問者を取得:

SELECT COUNT(DISTINCT `ip`) AS `visits`
FROM `mw_visitors` WHERE `bot` = 0 AND `time` BETWEEN
(SELECT `time` FROM `mw_visitors` WHERE `bot` = 0 ORDER BY `ID` ASC LIMIT 1) AND NOW()
4

2 に答える 2

0

さて、テーブル構造を見ました。その場合、探しているクエリは次のようになります。

SELECT COUNT(DISTINCT(`ip`)) / (SELECT ABS(DATEDIFF(NOW(),(SELECT `time` FROM `mw_visitors` ORDER BY `time` ASC LIMIT 1)))) AS `visits` FROM `mw_visitors` WHERE `bot` = 0 AND `time` BETWEEN NOW() AND (SELECT `time` FROM `mw_visitors` ORDER BY `time` ASC LIMIT 1);

最後までチェックしてませんでした(SELECT...)が、問題ないはずです。

于 2013-04-12T13:35:18.850 に答える