Avatar billede 81morten Nybegynder
16. februar 2006 - 23:03 Der er 7 kommentarer

select ten most used?

hej eksperter. Jeg har en access 2000 database hvor jeg gerne vil have trukket de ti mest brugte ud af, altså dem der optræder flest gange i datasen. hvis det altså er muligt. hver bruger har flere poster, og de poster som optræder skal som trækkes ud som en top ti.

eks.

id navn    password  nr1 nr2  nr3 nr4 nr5 nr6
1  anders  xxxx      5  6    3  7  8  9
2  gurli  xxxx      3  5    9  7  5  10
3  jens    xxxx      5  6    7  5  4  1

det skulle så komme ud sådan

#1 = 5
#2 = 7
#3 = 3

osv op til ti.

kan nogle hjælpe mig med dette.

dette spg. er oprettet men under asp.net
http://www.eksperten.dk/spm/688094
der var ikke lige nogle der kunne hjælpe
Avatar billede Slettet bruger
16. februar 2006 - 23:24 #1
Hvorfor er 5 på førstepladsen? Hvis det er den der har flest poster i "nr" felterne, skal det så ikke være nummer 9 der er højest?

Eller kan du forklare lidt nærmere hvad der skal listes?
Avatar billede ldanielsen Nybegynder
17. februar 2006 - 00:20 #2
Jeg er ikke sikker på at du kan gøre det direkte i en forespørgsel, dvs i ren SQL. Prøv dette:

Du kan lave 6 udtræk, og så lægge dem sammen. Det skal så programmeres i den application hvor du viser data frem, men det skal måske bare ses i Access? Anyway:

SELECT COUNT(*) AS Antal, nr1 FROM tblTabellen GROUP BY nr1
Giver dette resultat:
Antal  nr1
1    3
2    5

SELECT COUNT(*) AS Antal, nr1 FROM tblTabellen GROUP BY nr2
Giver dette resultat:
Antal  nr1
1    5
2    6

SELECT COUNT(*) AS Antal, nr1 FROM tblTabellen GROUP BY nr3
Giver dette resultat:
Antal  nr1
1    3
1    9
1    6

osv

Så kan man tælle det sammen i sin programmering.


Grunden til at du ikke kan lave udtrækket direkte er at du ikke har fået designet databasen helt optimalt. Havde du gjort dette, ville du kunne lave det:

En tabel med personer:

ID Navn
1    Hans
2    Peter
3    Jens


Og en tabel med karakterer (Hvis vi siger det er eksamensresultater der snakkes om)

ID  PersonID  Karakter
1    1        5
2    1        7
3    1        9
4    2        8
5    2        9


Dette betyder altså at Hans har været til tre eksamener, og har fået 5, 7 og 9, Peter har fået 8 og 9 i sine to.

Det kan let udvides til at vise hvilke fag og hvilke tidspunkter det er foregået på, men må ske dette er nok.

Så vile din TOP 10 simpelthen laves sådan:

SELECT TOP 10 COUNT(*) AS Antal, Karakter FROM tblKarakter GROUP BY Karakter ORDER BY Count(*)
Avatar billede ldanielsen Nybegynder
17. februar 2006 - 00:21 #3
SELECT TOP 10 COUNT(*) AS Antal, Karakter FROM tblKarakter GROUP BY Karakter ORDER BY Count(*) DESC

naturligvis
Avatar billede 81morten Nybegynder
17. februar 2006 - 06:44 #4
jeg havde selv forestillet mig noget med at jeg nok var nød til først at hive alle numrene ud og så derefter lave et script der lagde dem sammen og lavede outputtet men hvordan gør man det er ikke lige så god til det
Avatar billede ldanielsen Nybegynder
17. februar 2006 - 09:22 #5
Skal det vises på en hjemmeside, eller hvor skal det ses? Hvilket sprog skal det programmeres i?
Avatar billede 81morten Nybegynder
17. februar 2006 - 13:33 #6
det skal ses på en hjemmeside og det skal programmeres i enten asp eller asp.net
Avatar billede ldanielsen Nybegynder
17. februar 2006 - 14:15 #7
vender tilbage ...
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