Toon posts:

[SQL]3 hoogste waarden uit tabel halen

Pagina: 1
Acties:
  • 154 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een tabel, deelnemers, waar de scores ook in staan, ja dat kan netter, en nee, dat doe ik niet want dan moet ik het hele programma ombouwen en daar heb ik geen zin in.
tbl.deelnemers:
naam (text)
score1 (Single)
score2 (Single)
score3 (Single)
score4 (Single)
score5 (Single)
score6 (Single)
klassement (single)

Een score is in het formaat 000,00.

Nu wil ik van deze 6 scores een score voor het klassement maken, dit klassement bestaat uit de 3 hoogste scores van die 6. Is er een manier, in VB (het is in Acces) of via SQL om deze drie scores uit te lezen. Via MAX kan je namelijk alleen de hoogste score en niet de 3 hoogste scores uitlezen. Ik heb gezocht maar helaas kan ik nergens hiervoor een oplossing vinden

Dank!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Aflopend sorteren op score in je SQL en dan 3x fetchen in je VB.
Of kijken of access iets als een limit clausule heeft in z'n SQL.

[ Voor 7% gewijzigd door justmental op 25-01-2005 21:20 ]

Who is John Galt?


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 15-05 08:48

Janoz

Moderator Devschuur®

!litemod

Zolang je je database model niet fatsoenlijk maakt zul je dit gewoon in je alles op moeten halen en dit vervolgens in VB uit moeten rekenen.

Vraag me af wat minder werk wordt. Toch je database model aanpassen of al die ranzige workarounds implementeren die je nu tegen komt en waarvan je in de toekomst nog veel meer tegen gaat komen. Een fatsoenlijk datamodel maken is niet alleen maar om studenten bezig te houden tijdens hun opleiding ;)..

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

:o
Ik lees gewoon over dat gare db model heen.

Een workaround wordt zo wel erg lastig.
In SQL wordt dat dan iets van:
code:
1
2
3
4
5
6
7
8
9
10
11
select naam, score
from 
(select naam, score1 as score
 from ...
 union all
 select naam, score2
 from ...
 union all
...
)
order by score desc

Who is John Galt?


Verwijderd

Topicstarter
Dank voor de opbouwende kritiek betreffende het model. Ik heb het programma met deze basis zo gekregen en dit wijzigen zou betekenen dat ik eigenlijk volledig opnieuw zou mieten beginnen, en daar heb ik geen zin want het blijft wel een project dat ik voor mijn lol doe. Ik zal eens kijken of er met VB iets te doen valt. Ik ben nu echter wel op een ander probleem gestuit, wat mijns inziens niet eens aan het DB-model ligt. Maar ik gok dat daarvoor een nieuw topic openen zinvoller is om het zo enigzins leesbaar te houden.
Topic: [rml][ SQL/Access]Gemiddelde waarde in update-query gebruiken[/rml]

  • Boss
  • Registratie: September 1999
  • Laatst online: 20:07

Boss

+1 Overgewaardeerd

Je kan hiervoor in VBA zelf drie functies maken, MAX1 MAX2 en MAX3 die als input die 6 waarden gebruiken en de juiste waarde terug geven.

Als het in Access is kan je die VBA functie gewoon in een query gebruiken.
Makkelijkste is denk ik de 6 waarden in een array stoppen, die sorteren en dan de posities 1,2 en 3 uitlezen.

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1