Avatar billede Jørgen Lund Nybegynder
04. august 2006 - 09:08 Der er 8 kommentarer og
1 løsning

Gruppering og filtrering

Jeg har data som vist nedenfor:
-------------------
Bruger  dato
1        01-01-2006
1        01-02-2006
2        15-02-2006
3        13-03-2006
3        02-02-2006
-------------------
Jeg har brug for at det kun er den nyeste post pr. bruger der vises 
-------------------
Bruger  dato
1        01-02-2006
2        15-02-2006
3        13-03-2006
-------------------
Avatar billede Slettet bruger
04. august 2006 - 09:17 #1
SELECT bruger, MAX(dato) FROM tabel GROUP BY bruger
Avatar billede Jørgen Lund Nybegynder
05. august 2006 - 00:01 #2
Hej Sandbox

Det virker !

Jeg har dog lige en udfordring. Når jeg kobler flere colonner på viser den flere rækker end den skal
Avatar billede Jørgen Lund Nybegynder
09. august 2006 - 13:38 #3
OK du får dine point.
Der står 30 mere på højkant for den anden udfordring !!
Avatar billede Slettet bruger
10. august 2006 - 22:51 #4
Forklaringen er, at når man bruger GROUP BY, så må man kun udvælge to slags felter:
1) de kolonner, som skal grupperes efter.
2) aggregerede funktioner - som f.eks MAX()

Ellers ved databasen jo ikke fra hvilken af rækkerne i gruppen, der skal hentes oplysninger.
Avatar billede Slettet bruger
10. august 2006 - 22:51 #5
Og undskyld forsinkelsen. Jeg var lige på en uges ferie.
Avatar billede Jørgen Lund Nybegynder
24. august 2006 - 19:32 #6
Hej Igen - Håber du havde en god ferie
Jeg har faktisk flere kolonner i tabellen som jeg gerne vil have med ud også:
Jeg kan leve med at få ID med ud da jeg kan lave et view og joine det med 2 andre tabeller der har nøglen ID og kundeID
X Jeg har data som vist nedenfor:
-------------------
ID  KundeID  dato
207  1        01-01-2006
209  1        01-02-2006
211  2        15-02-2006
245  3        13-03-2006
280  3        02-02-2006
-------------------
Jeg har brug for at det kun er den nyeste post pr. bruger der vises 
-------------------
ID  KundeID  dato
209  1        01-02-2006
211  2        15-02-2006
245  3        13-03-2006
-------------------

Håber du kan hjælpe.
Avatar billede Jørgen Lund Nybegynder
24. august 2006 - 19:33 #7
"X" er en fejl !
Avatar billede Slettet bruger
24. august 2006 - 21:17 #8
SELECT *
FROM
  tabel AS t1,
  (SELECT bruger, MAX(dato) AS dato FROM tabel GROUP BY bruger) AS t2
WHERE t1.bruger = t2.bruger
  AND t1.dato = t2.dato

eller, hvis du ved at nyere poster altid har højere ID, kan det være smartere at bruge den til at vælge på i stedet for dato - for hvis samme bruger nu har to poster på samme dato.
Avatar billede Jørgen Lund Nybegynder
25. august 2006 - 09:35 #9
Du har noget der id er altid højere
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