20. november 2003 - 09:45Der 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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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 :-)
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.
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.
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.
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...
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.
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.