Avatar billede LME Nybegynder
18. maj 2013 - 09:14 Der er 4 kommentarer og
1 løsning

Distinct kun på én værdi (MS access / ASP)

Problemstilling:
Jeg henter en top 5 over "senest rettede enheder". Hvis der på en enhed er rettet 3 ting, så vil den under top 5 fremgå 3 gange. Jeg ønsker her, at den blot viser denne enhed 1 gang ... således top 5 henter de seneste 5 enheder fremfor seneste 5 rettelser (håber det gav mening?!).

Benytter:
- MS access
- ASP

Forsøgt indtil videre:
Normalt har jeg løst lignende opgaver med "distinct", men her hvor der er flere felter i brug, og jeg kun ønsker at "distinct'e" på én værdi, så går det i ged for mig.
Jeg har fundet flere lignende spørgsmål/svar herinde, hvor det løses ved group by el.lign., men jeg er ikke lykkedes med det.

Min kode pt.:
SELECT Distinct Top 5 Ferrari.ID, ActivityLog.ActivityId, ActivityLog.ActivityDateAndTime, Ferrari.size, Ferrari.ferrari, Ferrari.year
FROM Ferrari INNER JOIN ActivityLog ON Ferrari.ID = ActivityLog.ActivityItemId
ORDER BY ActivityId DESC

Opsummeret:
Hvordan får jeg ovenstående statement ændret, så den kun henter Ferrari.ID én gang (distinct) ... så top 5 kun indholder 5 unikke Ferrari.ID ?
Avatar billede fdata Forsker
21. maj 2013 - 19:18 #1
Prøv med:

SELECT DISTINCT Ferrari.ID, Max(ActivityLog.ActivityID) AS MaksOfActivityID, Ferrari.size, Ferrari.ferrari, Ferrari.År
FROM Ferrari INNER JOIN ActivityLog ON Ferrari.ID = ActivityLog.ActivityItemId
GROUP BY Ferrari.ID, Ferrari.size, Ferrari.ferrari, Ferrari.År;

(Jeg bruger År i stedet for Year. Access er lidt sart med at man bruger reserverede ord)
Avatar billede LME Nybegynder
21. maj 2013 - 23:14 #2
Tak for svar! Jeg tror vi nærmer os.
Dit statement kører igennem uden fejl, og jeg får en meget lang liste. Jeg tilføjede 'Top 5' mellem DISTINCT og Ferrari.ID, så er der kun 5 på listen, men sorteringen er skæv. Jeg skulle gerner have de 5 seneste, dvs. med de højeste 'ActivityId' ... det driller stadig.

Jeg prøvede at tilføje min oprindelige sortering (ORDER BY ActivityId DESC), men så fejler den med syntax error.

Kan du gennemskue, hvordan jeg får sorteringen med, så jeg får de senest rettede?
Avatar billede fdata Forsker
22. maj 2013 - 11:18 #3
Sorry. Havde lige glemt Top 5. Nedenstående kører hos mig:

SELECT DISTINCT TOP 5 Ferrari.ID, Max(ActivityLog.ActivityID) AS MaksOfActivityID, Ferrari.size, Ferrari.ferrari, Ferrari.År
FROM Ferrari INNER JOIN ActivityLog ON Ferrari.ID = ActivityLog.ActivityItemId
GROUP BY Ferrari.ID, Ferrari.size, Ferrari.ferrari, Ferrari.År
ORDER BY Max(ActivityLog.ActivityID) DESC;
Avatar billede LME Nybegynder
22. maj 2013 - 21:11 #4
Lige i øjet .... 1.000 tak, det var en kæmpe hjælp. Jeg har virkelig kæmpet meget med denne her. TAK
Avatar billede fdata Forsker
23. maj 2013 - 21:41 #5
Glæder mig at kunne hjælpe. Takker for point ;O)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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