Henrik wrote:
> Prøv at se et eksempel, jeg har skrevet for lidt tid siden. Det
> omhandler godt nok udtræk af tilfældige poster, men undervejs opnår man
> en "placering"-variabel (kaldet mindre).
> <URL:
http://actuar.dk/torben/show.asp?id=randomrecords>
>
> Det problem, jeg ser i dit eksempel, er, at hvis placeringen skal med,
> så skal alle spillere, der har scoret opdateres hver runde, men i mit
> setup skal kun nye mål lægges ind.
> Det arbejde der ligger i at skulle lave lidt mere komplicerede udtræk
> synes jeg klart opvejes at opdateringsbesværligheder. Så er der også håb
> om hyppige opdateringer.
>
> Hej Torben,
>
> det da bestemt meget fikst men heller ikke specielt enkelt for en begynder,
> som jeg havde indtryk af det var der lavede den første tråd. Det er vel et
> holdningsspørgsmål om man vil prioritere opdatering eller udtræk højest.
> Spørgsmålet er vel primært forholdet mellem nye data og udtræk af
> eksisterende. Hvis man nu forestiller sig det meget sandsynlige
> scenarie, at der er tale om en total topscorerliste for alverdens ligaer og
> lad os bare sige 1000 samtidige brugere som spørger på data, vil jeg ikke
> være ret meget i tvivl om hvilken metode der er hurtigst.
>
> Opdateringsbesværlighederne ser jeg da i øvrigt ikke som voldsomme. Er der
> noget du specielt tænker på? For at føje lidt til din argumentation vil jeg
> da lige sige, at også ikke scorende spillere skal opdateres hver runde i mit
> eksempel
Nå ja, det var vist også en smutter; jeg mente _alle_ spillere. Godt du
selv kan se det
Jeg mente heller ikke, at det var simpelt at sætte placering på, men
argumentet var bare, at alt kunne lade sig gøre med min opbygning.
For en nybegynder (og andre) ville man vel også først sætte placering
på, når man udskrev listen. Det er meget nemmere at have en
tæller-variabel i VBS'en.
Hvad angår udtræk over topscorere, så tror jeg SQL'en er lige nem i
begge tilfælde - dog skal jeg lige summere over en GROUP BY.
Min løsning vil dog også på simpel måde kunne udtrække målscorere fra
'sidste runde', 'denne halvsæson' og andre perioder.
Det Jesper selv bringer på bane i første indlæg er, at han gerne vil
kunne vise om spilleren er på vej op eller ned af listen. Her ville en
nybegynder formentlig udtrække topscorene for denne runde og sidste
runde, og så for hver spiller på listen fra denne runde finde tidligere
placering i sidste runde.
Jeg ville også lave to udtræk over topscorerene i denne og sidste runde
og derefter finde tidligere placering. Når jeg skal til at lede efter
sidste rundes placering, så kan jeg jo bare have en tæller i VBS, der
giver placeringen.
Alternativt, for den lidt mere erfarne bruger, kunne man i dit eksempel
joine de to udtræk, så der kun var et, men i mit setup, vil man også
kunne nøjes med et udtræk - dog mere kompliceret.
Jeg indrømmer, at ved udskrift er mit mere kompliceret, men i modsætning
til mit setup, hvor opdatering er simpelt, så vil dit være mere
kompliceret. Som oftest vil du først skulle udtrække alle målscorere,
dernæst indsætte en række for hver spiller med den nye målscore. Så skal
du lave et udtræk over denne runde ordnet efter totalscoren, og opdatere
placeringsfeltet i databasen. Dette er efter min mening unødigt tungt.
Endnu tungere bliver det, hvis der kan være udsatte kampe, hvor man så
skal tilbage og rette i data for den runde og _alle_ senere runder.
Denne gennemtænkning vil heller ikke være helt triviel for en nybegynder...
Der er altså både fordele og ulemper ved begge måder - læseren må selv
bedømme (eller kommentere :) )
/Torben