2017-05-15 5 views
1

私は、ユーザアカウントのユニークなIP訪問をカウントしています。私は総訪問VSグループ化されたユーザーアカウントの訪問グループのMySQLの結果が不正です

をチェックする上で異なる結果を取得しています

私のテーブルの構造は、この

$date1 = strtotime("yesterday midnight"); 
$date2 = strtotime("today midnight"); 

SELECT `userid`, COUNT(DISTINCT `userip`) AS `total` FROM `stats` 
WHERE (`date` >= $date1 AND `date` < $date2) AND `status`=1 

このように、この

id  userid  userip  status date 
1  xxxx  11111  1  unix timestamp 
2  yyyy  11122  1  unix timestamp 
3  zzzz  11133  1  unix timestamp 
4  cccc  11144  1  unix timestamp 

私がやっているクエリのようなものである5644

として結果を提供します

しかし、私がグループ化したときには、userid結果が異なります。

このは

おかげ

EDIT私はDISTINCTをカウントしていない場合

結果が正しいことにより、グループに異なる結果がある理由を参照してください6312

として結果を提供します

+1

を持つユーザーのクエリ

SELECT DISTINCT 'userip' AS 'userip' FROM 'stats' WHERE ('date' >= $date1 AND 'date' < $date2) AND 'status'=1 

以下、あなたの質問では、予想される出力を追加してください –

+0

あなたはあなたの主な質問に参加しましたか? –

+0

@knowledge .... no join –

答えて

0

明らかに、あなたの最初のクエリで10と一致していない場合は、countでdistinctを使用しました。フェッチされた行は5644です。あなたは、あなたがユニークユーザの使用が必要な場合は、クエリ

によってあなたのグループと同じになりますすべてのカウントの列を追加する必要がgroup byと同じカウントが必要な場合はそう2,3,4,5のような値を持つ数を有することができる

固有のIP

SELECT userid,userip from stats GROUP BY userip HAVING COUNT(*) >=1 
+0

質問で変更する必要があるものを表示できます –

+0

あなたはipidの値をuseridに割り当てていますか? –

+0

申し訳ありませんが、間違いがありました。私は値を割り当てていませんでした。 –

関連する問題