meerdere top's in query

Status
Niet open voor verdere reacties.

jwaque

Verenigingslid
Lid geworden
16 aug 2006
Berichten
438
in een vorige vraag http://www.helpmij.nl/forum/showthread.php/551748-top-10
hebben jullie mij geholpen met een top 10 vast te stellen voor verschillende instellingen. Nu probeer ik de query opnieuw te gebruiken maar lukt het me niet. Zouden jullie opnieuw willen meedenken?

Ik heb een tabel met Id, SoortMonster, Datum, Locatie, Uitslag
Nu wil ik per Locatie de laatste 100 records hebben. (kan ook losse query's maken maar dat zijn dan 8 losse query's)
vervolgens wil ik weten hoe vaak een uitslag voorkomt en dan het 95percentiel bepalen.

mijn query nu. Ik denk dat ik vooral de mist in ga met wat ik als eerste moet sorteren.

SELECT *
FROM (SELECT Id, locatie, Datum FROM Data GROUP BY Locatie ORDER BY Datum DESC) AS temp1
WHERE Toepassing IN ( SELECT TOP 10 Id, Locatie FROM ( SELECT Id, Locatie, Datum FROM Data GROUP BY Locatie ORDER BY datum DESC ) AS temp2 WHERE temp1.Locatie = temp2.Locatie
ORDER BY temp2.datum DESC )
ORDER BY temp1.Locatie, temp1.Datum DESC;
 
Maak even een voorbeeldje met wat gegevens; op basis van alleen een query weet ik niet wat er uit moet komen.
 
Zoals je bij je eerdere vraag al hebt gemerkt zijn er vaak meerdere oplossingen.
In de praktijk blijkt meestal wel welke oplossing de voorkeur heeft.

In dit geval heb ik gekozen om een extra veld (VolgordePerLocatie, numeriek) toe te voegen aan de tabel Data. Vervolgens wordt die volgorde per locatie via een functie bepaald. In een query beperk je dan het aantal records per locatie tot maximaal 100.
 

Bijlagen

  • Help mij Top100v2.zip
    71,7 KB · Weergaven: 35
bedankt.
moet wel even goed kijken hoe het werkt. Begrijp niet helemaal waarom je eerst een formulier moet openen of zou je het nummeren ook via een query of macro kunnen doen?
 
zou je het nummeren ook via een query of macro kunnen doen?
Wat is het voordeel daarvan?
Als je kijkt in het formulier zie je hoe de nummering wordt aangebracht. Daar zie je dat er bij het openen een functie wordt aangeroepen. Als je dat zou willen, kun je die functie ook aanroepen via een macro. Mijn voorkeur heeft dat niet, omdat in mijn optiek in een Access-applicatie er alleen gewerkt wordt via formulieren en rapporten, en niet rechtstreeks met tabellen en/of queries.
 
bedankt het werkt.. Ik moet leren vanuit formulieren te werken en niet direct vanuit de tabel.
mocht iemand nog weten wat ik fout doe in de orginele query dan hoor ik het graag zodat ik ervan kan leren.
 
Tuurlijk kan het in één query:

Code:
SELECT Data.locatie, Data.Datum, Data.Id
FROM Data
WHERE (((Data.Id) In (SELECT TOP 10 ID FROM Data AS tmp WHERE tmp.locatie = Data.locatie ORDER BY tmp.Datum DESC, tmp.ID DESC)))
ORDER BY Data.locatie, Data.Datum DESC;
 
helemaal geweldig. ik ga hem uitvoerig bestuderen in de hoop dat ik hem kan reproduceren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan