[sql] group by dingen die er niet zijn.

Pagina: 1
Acties:

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
simpel probleem maar vind geen oplossing.

Given: een database met een boel gegevens met elk gegeven een timestamp.

Needed: een lijst van 'activity' / uur.

Sofar: als ik groupby doen krijg ik idd een mooie en correcte opsomming van alle data. Maar er zijn uren waardat niets gebeurt en dan krijg ik ook niets. En natuurlijk wil uren die niets hebben ook terugkrijgen met '0' aan activity.

Ik doe alles via een GROUP BY mTime waar dat mTime = DATE_FORMAT(....);

Snelheid is in dit geval no issue, maar ik zie niet in hoe ik een groupby iets kan laten generen on the fly.

Tis voor mySQL 3.x btw dus geen 'echte' SQL truuken ;).

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Heb je alle mogelijke uren waar er activiteiten op kunnen plaatsvinden in je DB staan?

Zoniet, dan zal je dat moeten doen; je kan dan een tabel aanmaken die gewoon die uren bevat, en dan kan je daarop een outer join doen enzo.

https://fgheysels.github.io/


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
gekke oplossing dat ;) dus moet ik voor elke dag die er bestaat er eentje gaan aanmaken? :)

Of voor een bepaalde selectie eerst een tabel maken met de uren erin. Dat joinen had ik niet opgekomen maar vind het toch maar een 'weird' approach. die /per uur is eigenlijk ook nog eens per dag. ie: zoals gaan nazien hoeveel hits per/uur per/dag er binnenkomen.

Maar idd ik zie ook niet in hoe mySQL iets kan groupen dat niet bestaat (hence de Topic Name). Misschien moet ik 'dummy' data gaan invoegen? ie voor alle uren / pag die reeds zijn geweest er eentje bijvoegen? Wellicht een soort van vanalle input die niet fake zijn tot NOW() doe een insert van die tijd ALS die al niet bestaat (van een vorige). Of van de vorige fake naar de NOW().

Misschien kan ik maar beter een cron/job elk half uur eentje die nep input geeft doen ;) :)

  • jvdmeer
  • Registratie: April 2000
  • Laatst online: 08:34
hobbit_be schreef op 22 januari 2004 @ 21:07:
gekke oplossing dat ;) dus moet ik voor elke dag die er bestaat er eentje gaan aanmaken? :)
Maar het werkt wel. Hoe moet de SQL nou weten of 22-01-2004 bestaat, als er op die dag niets geregistreerd is. Je zou dit natuurlijk ook mbv Cron kunnen doen.
hobbit_be schreef op 22 januari 2004 @ 21:07:Maar idd ik zie ook niet in hoe mySQL iets kan groupen dat niet bestaat (hence de Topic Name). Misschien moet ik 'dummy' data gaan invoegen? ie voor alle uren / pag die reeds zijn geweest er eentje bijvoegen? Wellicht een soort van vanalle input die niet fake zijn tot NOW() doe een insert van die tijd ALS die al niet bestaat (van een vorige). Of van de vorige fake naar de NOW().
Dat met NOW() gaat niet werken. Zodra je controleert of NOW() bestaat, is NOW() alweer veranderd. ook wel logisch als de tijd in 1/1000ste-seconden gaat.