Welkom op het forum van startpagina!

Dit forum staat op alleen-lezen. Je kan hier informatie zoeken en oude berichten terugvinden, maar geen nieuwe berichten plaatsen.

Naar overzicht van alle forums

Systeem, Max Datum met Waarde

  • Joker2

    Ik heb een tbl met 3 velden: Systeem, Datum en Waarde (staan allemaal niet gesorteerd).

    Systeem heeft 3 mogelijkheden (bijv. 1, 2, 3). Per Systeem kunnen er meerdere datums vermeld staan met verschillende Waarden (dus per systeem zijn er meerdere regels).

    Nu zou ik graag via een query het volgende willen zien:

    Per Systeem, de Max Datum met de desbetreffende Waarde van die datum.

    Het resultaat moet dus maar uit 3 regels bestaan (immers 1 per Systeem).

    Ik heb al het e.e.a. geprobeerd door van Datum Max te nemen, en de Systemen te groeperen. Wat dan echter niet lukt is van die maximale datum de bijbehorende waarde te krijgen (heb al geprobeerd: laatste, eerste, ……….).

    Een andere mogelijkheid is om eerst via een aparte query per Systeem de maximale Datum te achterhalen en deze weer in een nieuwe query te koppelen op de originele tbl. Ik vind het allemaal nogal erg omslachtig, vandaar mijn vraag aan jullie om mee te denken aan een andere oplossing.

    Alvast bedankt voor jullie (re)acties.

    Joker2

  • Joker2

    Mijn vraag heb ik ook bij de Microsoft Newsgroup geplaatst en het volgende (werkende) antwoord is hierop gekomen.

    Het is dus niet van mezelf, maar het lijkt me zinvol om hier toch te melden.

    —————————————————-

    Joker2,

    Met onderstaande query zou dat moeten lukken:

    Tabel: Tabel3

    Velden: Systeem, Datum en Waarde

    SELECT Tabel3.Systeem, Tabel3.Datum, Tabel3.Waarde

    FROM Tabel3

    WHERE ((( & “@@@” & ) In (SELECT systeem & “@@@” &

    MAX(Datum) FROM Tabel3 Group By Systeem)))

    ORDER BY Tabel3.Systeem;

    De velden Systeem en Datum worden aanelkaar gekoppeld via de string “@@@”

    (of een andere combinatie van tekens waarvan het zeker is dat die in het

    veld Systeem niet voorkomt).

    Als deze combinatie bestaat in de subquery SELECT systeem & “@@@” &

    MAX(Datum) FROM Tabel3 Group By Systeem dan wordt het overeenkomstige record

    weergegeven.

    Jan

  • JaapT

    Joker2,

    Toch klopt hier iets niet.

    Stel je hebt:

    systeem datum waarde

    1 20-10-04 1

    1 20-10-04 2

    1 20-10-04 3

    1 20-10-04 4

    1 20-10-04 5

    1 20-10-04 6

    Welke wil je dan zien?

    Succes,

    Jaap

  • RV

    >Per Systeem kunnen er meerdere datums vermeld staan met verschillende Waarden<

    Wat je hier lijkt te zeggen is dat een systeem meerdere waarden kan hebben.

    Oftewel, je zou 2 tabellen moeten gebruiken.

    In tabel 1 sla je je systemen op, in tabel 2 de waardes die een systeem kan hebben.

    Tussen deze twee tabellen definieer je een 1 op veel relatie

    Tabel 1

    Systeem_ID, gegevenstype autonummering

    Systeem, tekst

    Tabel 2

    Systeem_ID, numeriek, verwijzende sleutel naar Tabel 1

    Datum

    Waarde

    Maak een relatie tussen deze tabellen in het relatievenster.

    Relatie loopt over kolom Systeem_ID van beide tabellen.

    Vink checkboxes “…referentiele integriteit” en “… bijwerken gerelateerde velden” aan.

    Maak vervolgens een query om je meest recente datum op te halen.

    Query ziet er in SQL weergave qua opzet zo uit:

    SELECT Tabel1.Systeem, Tabel2.MAX(Systeemdatum), Tabel2.Waarde

    FROM Tabel 1 INNER JOIN Tabel2 ON Tabel1.SysteemID = Tabel2.SysteemID

    GROUP BY Tabel1.Systeem, Tabel2.Waarde

    RV

  • Joker2

    Ik ben in de vraag niet helemaal duidelijk geweest over de datums, maar een datum kan maar 1x voorkomen. Dus niet meerdere waarden met 1 datum.

    Genoemd voorbeeld van JaapT zal bij mij niet voorkomen.

    Toch bedankt voor jullie reactie en het meedenken.

    MvG

    Joker2

  • JaapT

    Joker2,

    Ik ging van het volgende uit:

    Per Systeem kunnen er meerdere datums vermeld staan met verschillende Waarden.

    Nu snap ik dus niet meer wat je wilt.

    Kun je s.v.p. zoals ik heb gedaan een tabelletje geven zoals het bij jou is ingevoerd (met een voorbeeld van alle kolommen)?

    Succes,

    Jaap