1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

In einer Abfrage letzten Datensatz anzeigen

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Jobbi, 8 Januar 2018.

  1. Jobbi

    Jobbi Benutzer

    Hallo Leute,
    bitte helft mir SQL-Laien weiter. Diverse Internetforen bieten zwar Lösungsschnipsel an, ich kriege daraus aber kein Bild für meine Lösung zusammen. Das Problem (als vereinfachtes Beispiel wie folgt):

    Ich habe mit MS-Access 2010 zwei Tabellen tb_AG (Artikelgruppen) und tb_Art (Artikel), die über das AutoWert-Feld ID_AG in tb_AG in einer 1:n-Beziehung stehen.
    Zu jeder Artikelgruppe gibt also n Datensätze in tb_Art.
    Die Abfrage soll zu jeder Artikelgruppe nur den jeweils letzten DS (hier gemeint: den höchsten AutoWert) anzeigen.
    Mein Lösungsversuch bestand darin, die jeweils einzelnen SQL-Abfragen zu verschachteln (Max-Wert ab FROM):

    SELECT
    tb_Art.ID_AG,
    ID_Art
    FROM
    (SELECT ID_AG, ID_Art
    FROM tb_Art
    WHERE (((tb_Art.ID_Art)=(SELECT Max(ID_Art) FROM tb_Art)))
    INNER JOIN
    tb_AG
    ON
    tb_AG.ID_AG = tb_Art.ID_AG;

    Ist aber falsch, das ist mir klar. Mehr aber leider auch nicht.


    Ich würde mich sehr über einen Lösungsvorschlag freuen!
    Jobbi
     
  2. ukulele

    ukulele Datenbank-Guru

    Wie wäre es mit
    Code:
    SELECT
    t.ID_AG,
    t.ID_Art,
    tb_AG.*
    FROM
    (SELECT ID_AG, max(ID_Art) AS ID_Art
    FROM tb_Art
    GROUP BY ID_AG) t
    INNER JOIN
    tb_AG
    ON
    tb_AG.ID_AG = t.ID_AG;
    Wobei der INNER JOIN mit tb_AG nur Sinn macht wenn man auch Spalten aus tb_AG braucht.
     
  3. Jobbi

    Jobbi Benutzer

    Hallo Ukulele,

    ja! Group By ist der Schlüssel zur Lösung. Vielen Dank, Dein Code funktioniert wie ich es wollte.
    Viele Grüße
    Jobbi
     
  4. akretschmer

    akretschmer Datenbank-Guru

    das ist nur die halbe Lösung, die andere Hälfte ist das max(ID_Art).
     
  5. Jobbi

    Jobbi Benutzer

    Stimmt.
    Meine spontane Antwort an Ukulele war auch nur so gemeint, dass ich auf die Group-By-Anweisung selber nie gekommen wäre. Wie gesagt, meine SQL-Kenntnisse sind sehr begrenzt.
     
Die Seite wird geladen...

Diese Seite empfehlen