Avatar billede jevaan Nybegynder
28. december 2006 - 13:25 Der er 5 kommentarer og
1 løsning

Retuner nyeste distinct

Jeg har en tabel der indeholder følgende:
Kundenavn, Dato, Værdi, etc (Det er de 3 vigtige felter)

Hvert kundenavn optræder mange gange med forskellige datoer, og muligvis forskellige værdier. Det kunne være:
Kunde - Dato - Værdi
B - 03.12.06 - 4
A - 12.12.06 - 5
C - 09.12.06 - 8
B - 12.12.06 - 9
A - 11.12.06 - 3
A - 09.12.06 - 5
B - 10.12.06 - 2
C - 20.12.06 - 7

Det jeg skal bruge er den sidste/nyeste værdi for hver kunde, altså:
A - 12.12.06 - 5
B - 12.12.06 - 9
C - 20.12.06 - 7

Group By Kundenavn giver ikke den nyeste værdi.
SELECT Kundenavn, Dato, Værdi FROM Tabel GROUP BY Kundenavn

Distinct giver enten kun kundenavn eller kun hvor alle felter er unikke (hvilket er alle rows)
SELECT DISTINCT Kundenavn FROM Tabel
SELECT DISTINCT Kundenavn, Dato, Værdi FROM Tabel

Dato skal være den højeste/nyeste færdi. Kun en værdi pr unik Kundenavn. Værdien fra højeste/nyeste dato.

Det ligger på en MySQL 5.0.27
Avatar billede erikjacobsen Ekspert
28. december 2006 - 13:30 #1
Det kan man klare med en subselect. Hvad er din primærnøgle på tabellen?
Avatar billede jevaan Nybegynder
28. december 2006 - 13:35 #2
PKey er 'ID' som er autoinc
Avatar billede erikjacobsen Ekspert
28. december 2006 - 15:32 #3
Jeg har en lille tabel med

id      navn    dato
1    Hans    2006-01-01
2    Peter    2006-01-02
3    Kurt    2006-01-11
4    Søren    2006-01-10
5    Ole    2006-01-08
6    Ole    2006-01-09
7    Hans    2006-01-07
8    Hans    2006-01-06
9    Hans    2006-01-05
10    Kurt    2006-01-04


Med

select id,navn,dato from tabel1 where (navn,dato) in (select navn,max(dato) from tabel1 group by navn)

får jeg

2    Peter    2006-01-02
3    Kurt    2006-01-11
4    Søren    2006-01-10
6    Ole    2006-01-09
7    Hans    2006-01-07


Der går nok noget galt, hvis samme dato står ved samme navn flere gange.

Er det noget du skal gøre tit, kan det måske betale sig at have en tabel, som du altid opdaterer med den nyeste dato for hver person. Så er forespørgslen billigere.
Avatar billede jevaan Nybegynder
29. december 2006 - 18:18 #4
Jeg takker for hjælpen. Smider du et svar?
Avatar billede erikjacobsen Ekspert
29. december 2006 - 18:38 #5
Jeg samler slet ikke på point, tak.
Avatar billede jevaan Nybegynder
29. december 2006 - 18:41 #6
Jamen så lukker jeg.
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