Avatar billede ttopholm Nybegynder
20. juli 2004 - 12:45 Der er 9 kommentarer og
1 løsning

Select sætning med gruppér og sådan noget

Jeg skal bruge en select sætning, hvor den finder alle der er lig en dato, og gruppere resultatet så de "brugere" der er den samme, står sammen, samtidig med at jeg skal have antallet af "brugere" der er grupperet sammen. 

Fik i den
Avatar billede dark-devil Nybegynder
20. juli 2004 - 12:57 #1
Prøv at forklar lidt bedre.
Avatar billede stingbat Nybegynder
20. juli 2004 - 13:06 #2
Prøv evt:
.... WHERE TO_DAYS(`datofelt`) = TO_DAYS(NOW()) ...

Så virker det nemlig også, hvis du har både dato og tid i samme felt :)

Ellers kan du benytte DATEDIFF, eller lign. funktioner, men visse af dem, kræver MySQL 4.1.1. Dermed vil det ikke virke på alle webhoteller, som kan køre 3.x.x.
Avatar billede ttopholm Nybegynder
20. juli 2004 - 13:17 #3
dato'en er ikke problemet, mit problem er at gruppere efter brugere, ved gruppering grupere den jo brugerne sammen, men jeg skal også bruge hvor mange brugere der er i hver gruppering.... Håber det hjælper...
Avatar billede stingbat Nybegynder
20. juli 2004 - 13:31 #4
Nå jah ups... kom lige i tanke om det nu her, at det var gruppering, du ønskede.

Der skal du bruge følgende i stedet:
SELECT ... GROUP BY TO_DAYS(`datofelt`)

Og så skal du selvfølgelig i PHP (eller hvad du benytter) holde styr på om datoen er skiftet, og så lave en "opdeling" hvis :)
Avatar billede ttopholm Nybegynder
20. juli 2004 - 13:58 #5
ja.. men den skal jo ikke gruppere dato men brugere
Avatar billede stingbat Nybegynder
20. juli 2004 - 14:18 #6
Åh sorry... Er ikke lige så frisk i hovedet lige nu :-/

Mener at det (i teorien) skulle lade sig gøre med enten:
SELECT COUNT(`BrugerID`) AS `antal`, .... FROM .... WHERE TO_DAYS(`datofelt`) = TO_DAYS(NOW()) GROUP BY `BrugerID`
eller:
SELECT DISTINCT `BrugerID`, COUNT(`BrugerID`) AS `antal`, .... FROM .... WHERE TO_DAYS(`datofelt`) = TO_DAYS(NOW())

Dermed - ikke lige testet! :)
Avatar billede ttopholm Nybegynder
20. juli 2004 - 20:30 #7
Den her:
SELECT COUNT(`BrugerID`) AS `antal`, .... FROM .... WHERE TO_DAYS(`datofelt`) = TO_DAYS(NOW()) GROUP BY `BrugerID`

tæller vil bare alle brugerID.. men den skal tælle hvor mange der er i hver gruppering...
Avatar billede stingbat Nybegynder
20. juli 2004 - 20:58 #8
Er ikke lige sikker på, at du kan præcis det du ønsker.

Enten skal du trække dem ud, med " ORDER BY `BrugerID`", så du får dem stilt korrekt op. Dernæst må du lave optællingen på anden vis. Eller må du lave det i 2 kald.

Dog en anden måde, der nok er nemmere at lave det på, er mht. classes eller arrays. F.eks.:
$users[$row['Brugernavn']][] = $row;

Så løber du dem alle igennem, indsætter i array'et, og derefter er det enkelt at løbe array'et igennem, for hver "bruger", samt dertil listende rækker.

Kan være at du måske kan lave det, hvis du på en eller anden måde, kan lave et script under selve MySQL'en. Dog nok kun muligt i 4'ren eller i hvertfald i 5'eren.
Avatar billede ttopholm Nybegynder
21. juni 2005 - 09:57 #9
Kan ikke huske hvad løsningen hva, men stingbat smid et svar
Avatar billede stingbat Nybegynder
23. juni 2005 - 14:32 #10
okay :)
Håber dog at du fik det til at virke i sidste ende.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester