2017-05-15 3 views
1

Ich zähle Unique IP Besuche für Benutzerkonto. Ich erhalte anderes Ergebnis auf Besuche Überprüfung vs gruppiert Benutzerkonto BesucheMySQL inkorrektes Ergebnis in der Gruppe von

Meine Tabellenstruktur ist wie dieser

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 

ich tue Abfrage wie diese

$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 

Dies gibt Ergebnis als 5644

Aber wenn ich gruppiere durch userid Ergebnis ist anders

$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 GROUP BY `userid` 

while($row=mysqli_fetch_assoc($result)){ 
    $total=$total+$row['total']; 
} 

Dies gibt Ergebnis als 6312

Bitte sehen, warum anderes Ergebnis dort auf Gruppe von

Dank ist

EDIT

Ergebnis ist korrekt, wenn ich nicht DISTINCT zählen

+1

fügen Sie bitte Sie Ausgabe in Ihrer Frage erwartet –

+0

Haben Sie getan, bei Ihrer Hauptanfrage mitzumachen? –

+0

@knowledge .... keine Joins –

Antwort

0

ist es offensichtlich, dass die count passt nicht wie in Ihrer ersten Abfrage, die Sie distinct mit count verwendet haben. Die abgerufenen Zeilen sind 5644.

Welche Zählung mit den Werten wie 2,3,4,5 haben also, wenn Sie benötigen den gleichen Zählwert wie group by Sie brauchen alle Zählspalte hinzuzufügen, die als Gruppe

durch Abfrage gleiche sein wird, wenn Sie die Verwendung Unique User benötigen unter Abfrage

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

Für Benutzer mit eindeutigen IP-

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

Können Sie mir zeigen, was ich in der Abfrage –

+0

ändern soll? –

+0

Entschuldigung, es war Rechtschreibfehler Ich habe keinen Wert –