Jeg har en database med ugedag,dato og klokkeslet.
Jeg sklál vide hvad der er sket på den enkelte dag time for time.
Hvordan kan jeg lave en rapport, hvor den tælle sammen, hvad der er sket mellem kl f.eks. 05:59 og kl 06:59, og de efterfølgende timer. det skal gælde for hele døgnet.
Nu er det jo ikke megen information du giver. Det er altid en god ide at oplyse om tabellernes felter og felttyper. De oplyste oplysninger vil f.eks. alle kunne uddrages af et enkelt datofelt, men jeg formoder, at du rent faktisk har brugt 3 felter. Jeg vil ligeledes formode, at dato og klokkeslet er to datetime felter.
Du skriver, at du ønsker en rapport der viser, "hvad der er sket", men du angiver ikke noget om, hvordan du vil have det oplyst. Så jeg har antaget, at du bare vil have oplyst hvor mange registreringer der er foretaget for hver time.
Med de antagelser in mente kunne du gøre sådan her:
Opret en tabel (tblTimeInterval) med to felter, FraTidspunkt, TilTidspunk. Herefter indtaster du 24 records med fra og til tidspunkter i denne tabel: 00:00:00 00:59:59 01:00:00 01:59:59 02:00:00 02:59:59 ... osv 23:00:00 23:59:59
Du kan nu lave en optællingsforespørgsel:
SELECT dt.Ugedag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt, COUNT(dt.Ugedag) AS Registreringer FROM tblTimeInterval AS ti, tblDinTabel AS dt GROUP BY dt.UgeDag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt
Fordelen ved at gøre det på den måde er, at du også får listet de tidsintervaller, hvor der ikke er sket nogen registreringer.
Disclaimer: Ovenstående er ikke testet (det må du selv gøre).
Og så glemte jeg selvfølgelig det vigtigste: udvælgelsen
SELECT dt.Ugedag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt, COUNT(dt.Ugedag) AS Registreringer FROM tblTimeInterval AS ti, tblDinTabel AS dt WHERE dt.Klokkeslet BETWEEN ti.FraTidspunkt AND ti.TilTidspunkt GROUP BY dt.UgeDag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt
Jeg er faktisk kommet lidt i tvivl om en LEFT JOIN er nødvendig for at få alle tidsintervaller med. Måske skal du i stedet bruge
SELECT dt.Ugedag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt, COUNT(dt.Ugedag) AS Registreringer FROM tblTimeInterval AS ti LEFT JOIN tblDinTabel AS dt ON dt.Klokkeslet BETWEEN ti.FraTidspunkt AND ti.TilTidspunkt GROUP BY dt.UgeDag, dt.Dato, ti.FraTidspunkt, ti.TilTidspunkt
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.