Opgelost Group By query waarde

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Nico84

Gebruiker
Lid geworden
21 jul 2011
Berichten
191
Hoe krijg ik het voor elkaar dat de locatie getoond wordt in een groupby query.
Zie afbeelding hieronder.

Artikel ID -> group by
Datum -> Max voor de meest recente datum
Locatie-> ???

Group by.png
 
Volgens mij klopt je voorbeeld niet (of ik snap het voorbeeld niet :cool:). De meest recente datum bij 1101 is 15/9.
Je query wordt dan:
Code:
SELECT Q1.ArtikelID, Q1.MaxDatum, T1.Locatie
FROM (SELECT ArtikelID, Max(Datum) AS MaxDatum FROM T1 GROUP BY ArtikelID) Q1
INNER JOIN T1 ON Q1.MaxDatum = T1.Datum;
 
Of

Code:
SELECT ArtikelID, Datum, Locatie
FROM T1
WHERE Datum = DMax("Datum", "T1", "ArtikelID = " & ArtikelID);
 
Domeinfuncties in een query zijn niet zo performant: voor elke rij moet een tabelscan gebeuren. Dus als je 1000 rijen hebt moet je 1000 keer 1000 lijnen doorlopen.
 
Noiu en? In Access is dat écht geen probleem..... Je zou toch eens een keer moeten werken met het programma om te zien dat het echt geen bal uit maakt. In ieder geval niet meetbaar is voor het blote oog.
 
Bedankt voor de reacties.
XPS351 je heb gelijk, ik had het voorbeeld even snel gemaakt.

Ik krijg het alleen niet voor elkaar om de gegeven antwoorden toe te passen in mijn database.

De gegevens komen uit ons softwarepakket, die de data naar een MS Azure SQL database upload.
De tabellen in de access database staan hier naar gelinkt.
Ik heb een voorbeeld bijgevoegd met de tabellen en gegevens uit de database. Staan 2 querys in.

qryDMAX
Geeft een error als ik onderstaande formule erin plak.
DMax("creation_date_time";"dbo_stock_entry_location_stock_entry";"stock_entry_id = " & [stock_entry_id])

Lijkt een error te geven op creation_date_time, als ik dit vervang voor quantity geeft hij geen error.

qrySubquery
Deze geeft een veelvoud aan gegevens.

Willen jullie er eens naar kijken, wat ik fout doe.
Alvast bedankt!
 

Bijlagen

als je met SQL tabellen werkt, zeker geen domeinfuncties gebruiken. De foutmelding komt waarschijnlijk van het feit dat de datumnotatie van de SQL database verschillend is van deze in je Access applicatie.
In de oplossing van XPS351 mankeer je in de join expressie van de subquery de link naar het artikelID
 
In mijn query zat inderdaad een fout die met de beperkte set testgegevens niet boven water kwam. Ik heb de query daarop aangepast en ook meteen geschreven op de werkelijke tabellen.
In de data vielen me wel wat dingen op.
Zo zijn er records in dbo_stock_entry_location_stock_entry met een ongeldige stock_entry_location_id. Die laat ik buiten beschouwing, want daar kan je de locatie niet van tonen.
Verder viel me op dat stock_entry_id en stock_entry_location_id samen de sleutel zijn van dbo_stock_entry_location_stock_entry. Dat betekent dat je per artikel/locatie dus maar één record kan hebben. Dat is op zich natuurlijk niet fout, maar ik vraag me wel af of het terecht is dat je zoekt naar de recentste creatiedatum in plaats van de recentste mutatie datum.

Om te controleren of de query nu wel goed werkt heb ik wat tellingen gedaan.

records in stock_entry_location
19.432​
ongeldige locatie
520​
blijft
18.912​
unieke artikelen
18.385​
"dubbele" artikelen
29​
uitkomst
18.414​

Onder dubbele artikelen versta ik hier artikelen die op twee locaties dezelfde creatiedatum hebben, waarbij die datum ook de hoogste is voor het artikel.

De database met mijn query's heb ik toegevoegd.
 

Bijlagen

maar ik vraag me wel af of het terecht is dat je zoekt naar de recentste creatiedatum in plaats van de recentste mutatie datum.

als je met FIFO werkt, dan heb je idd de creatiedatum nodig. Als er een artikel bij aanlevering op verschillende locaties wordt weggezet zijn er bijkomende criteria nodig zoals bijvoorbeeld het type of de picking order van de locatie.
 
Ben vergeten te reageren, maar bedankt voor de hulp en het voorbeeld Peter.
Tellingen moet ik nog even in duiken hoe het precies zit.
Wat ik al aangaf heb ik geen invloed op de data/database, deze is afkomstig vanuit ons softwarepakket.

Voor nu ben ik geholpen en kan ik weer verder.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan