SELECT DISTINCT - GROUP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

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

23/12/2024 07:54:16
 
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.