Avatar billede kovalt Nybegynder
20. november 2003 - 09:45 Der er 11 kommentarer og
1 løsning

Udskrive TOP 4 for alle poster i en tabel

Hej

  Er der en venlig sjæl, der kan forklare mig hvorledes man selecter TOP 4 fra samtlige poster i en tabel.

Jeg har to tabeller. Én tabel indeholder en liste over en masse hold. En anden tabel indeholder en lister over alle de kampe de forskellige hold har spillet.

De jeg gerne vil ha er en query, der udskriver samtlige holds sidste fire kampe.

Min hold-tabel har følgende struktur:

nr, holdNavn......

Min kamp-tabel har følgende struktur.
kampNr, dato, hjemmeHoldNr, udeHoldNr, hjemmeScore, udeScore

Er der nogen der kan hjælpe...

/Kovalt
Avatar billede jobba Nybegynder
20. november 2003 - 10:10 #1
Du laver en query (forespørgsel), hvor du linker du to tabeller sammen på [Hold].nr og [kamp].hjemmeHoldNr og igen en link mellem [Hold].nr og [kamp].udeHoldNr.
Derefter udvælger du holdNavn, som det felt du gerne vil have returneret.
Derefter udvælger du [kamp].dato, vælger sortering til Descending (faldenede), og vælger at den ikke skal vises.
Tilsidst går du ind i SQL visning, og tilføjer teksten " TOP 4 " (uden gåsetegnende) lige efter SELECT.
Nu skulle din forespørgsel virke :-)
Avatar billede jobba Nybegynder
20. november 2003 - 10:15 #2
Ups de to link's virker ikke sammen.
Du skal kan lave et link mellem [hold].nr og feks. hjemmeHoldNr. Men det  returnerer kun Hjemmehold-navnet for de fire sidste kampe.
Avatar billede jobba Nybegynder
20. november 2003 - 10:17 #3
Nej glem det! Jeg læste lige dit spørgsmål igen, og fandt ud af, at jeg har misforstået det hele :-) Du skriver nemlig at du vil have en query, som returnerer samtlige holds sidste fire kampe.
Avatar billede kovalt Nybegynder
20. november 2003 - 10:26 #4
Mit problem er at få returneret lige præcis 4 kampe for hver hold. Jeg har ikke problemer med at få samtlige kampe udskrevet!

Det er at få sammenhængen antalhold*4 = antal poster der vises.

Jeg kan ikke bare bruge en TOP antalhold*4 - idet dette ikke nødvendigvis giver præcis fire kampe pr. hold.

/Kovalt
Avatar billede jobba Nybegynder
20. november 2003 - 10:29 #5
Det du skal have lavet, er en UNION query. Du laver flere små queries - En til hvert hold, som returner TOP 4. Derefter laver du en UNION query, som samler alle de små queries i én.
Avatar billede kovalt Nybegynder
20. november 2003 - 10:49 #6
hvordan pokker går jeg det i SQL.

Der er ca. 500 hold
Avatar billede jobba Nybegynder
20. november 2003 - 10:56 #7
Ok. Jeg ser problemet :) Der skal nok lidt mere til end en Access Query.
Jeg vil nok have løst det med Visual Basic.
Først i koden, henter du et recordset med alle holdene. Derefter genererer du en SQL statement, som indeholder UNION's at Select statements - En for hver hold. Og derefter udfører du SQL statementen.
Et problem jeg kunne se her, var evt. at stamenten bliver ALT for stor til at ville eksekveres. Der må jo være en grænse for hvor mange tegn en statement kan indeholde.

Det kan være at jeg kan komme på en bedre løsning om lidt...
Avatar billede kovalt Nybegynder
20. november 2003 - 11:00 #8
Det hele bruges i en ASP-løsning. Problemet med min første løsning (som virke ved op til ca. 100 hold) er at der kommer en server timeout :-(
Avatar billede kovalt Nybegynder
20. november 2003 - 11:04 #9
men der brugte jeg godt nok ikke union
Avatar billede jobba Nybegynder
20. november 2003 - 11:04 #10
Nu forstår jeg ikke helt, hvad din først løsning var. Men hvis du får en server timeout, kunne det give god mening at flytte Access databasen over på en SQL-server, som er langt mere hastighedsoptimeret og skruet sammen til avancerede queries.
Avatar billede kovalt Nybegynder
20. november 2003 - 13:37 #11
jeg synes bare jeg har så meget SQL på siden at jeg ikke ilge magter at skifte......
Avatar billede kovalt Nybegynder
25. november 2003 - 00:51 #12
lukker spm.
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