SELECT DISTINCT - GROUP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn Wieringa

Martijn Wieringa

16/05/2007 10:37:00
Quote Anchor link
Ik heb een tabel die statistieken opslaan. Elke HIT wordt geregistreerd in de tabel 'statistics'. In de statistieken wordt o.a. de huidige SESSION_ID, een datum, tijd, en het 'member_id' opgeslagen. Tevens bevat de tabel de kolom ID die a-la auto_increment zichzelf steeds van een waarde voorziet.

Het 'member_id' heeft de waarde 0 als de bezoeker NIET is ingelogd, of bevat het het 'member_id' uit de tabel 'members' indien de bezoeker wel is ingelogd.

Om te bekijken wie er 'actief' zijn op de website, wil ik de statistieken tabel gebruiken voor het uitlezen van actieve sessies in de laatste X minuten.

Ik wil daarom een query bouwen die elke geregistreerde SESSION_ID in de laatste X minuten opvraagt. Ik wil per sessie_id maar 1 record terug (distinct).

Omdat ik wil weten of de bezoeker (niet meer) ingelogd is het noodzakelijk dat ik de record met het hoogste ID terug krijg. Dit laatste (dat ik dus de meest recente statistiek krijg bij een bepaald SESSION_ID) krijg ik niet voor elkaar.

De query die ik nu run:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$sql
= "SELECT DISTINCT `session`, `member`, `id` FROM `statistics` WHERE (`date` >= '" . $date . "') AND (`time` >= '" . $time . "') GROUP BY `session`, `member` ORDER BY `id` DESC;";

?>


Om een of andere reden krijg ik niet het record met het hoogste ID, maar lijk ik een willekeurig record (uit de laatste x minuten) terug te krijgen. Ik krijg wel netjes 1 record per SESSION_ID.

Ik heb ff geprobeerd m.b.v. 'HAVING MAX(`id`)' de query aan te passen maar toen bleven de recordsets continue leeg.

Wie kan me helpen de passende query te schrijven? :P
 
PHP hulp

PHP hulp

08/05/2021 20:20:51
 
Martijn Wieringa

Martijn Wieringa

16/05/2007 10:50:00
Quote Anchor link
Hmm.. na wat onlogische dingen te hebben geprobeert kwam ik toch uit tot iets dat lijkt te werken :P

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$sql
= "SELECT `session`, `member`, MAX(`id`) AS `max_id` FROM `statistics` WHERE (`date` >= '" . $date . "') AND (`time` >= '" . $time . "') GROUP BY `session` ORDER BY `id` DESC;";

?>
Gewijzigd op 01/01/1970 01:00:00 door Martijn Wieringa
 
Thijs X

Thijs X

16/05/2007 11:21:00
Quote Anchor link
Pholeron waarom maak je niet gebruik van een DATETIME veld?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.