MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > SQL
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 17.08.2019, 09:16   #1
trekking1
MOF Profi
MOF Profi
Standard Jet-SQL - Max Wert von Datum

Hallo Miteinander,
irgendwie stehe ich gerade auf dem Schlauch und steige nicht durch.

Habe 2 Tabellen, die 1:n Verknüpft sind.
Code:

1 - Tabelle
tbl1
  Key1
  String1
  String2
  String3

n - tabelle
tbl2
  Key2
  Key1 (FK)
  Datum1
  String4
  String5
Nun will ich jeweils nur den aktuellsten Datensatz (Max Datum1) angezeigt bekommen. Mit allen Feldern aus tbl1 und auch tbl2.
Da hakt es im Moment, da es mit einem einfachen Group ja nicht geht. Kann mir zwar die Max Werte aus tbl2 anzeigen lassen, schaffe es aber nicht die anderen Werte auch anzeigen zu lassen, da er mir dann ja immer guppiert und ich alles angezeigt bekommen.

Danke für eure Unterstützung.

Viele Grüße
trekking
trekking1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.08.2019, 13:44   #2
knobbi38
MOF User
MOF User
Standard

Hallo,

probiere es mal so:
PHP-Code:

SELECT t2.*, t1.*
FROM (
  
tbl2 AS t2 INNER JOIN (
    
SELECT Max(tbl2.Datum1) AS MaxVonDatum1 from tbl2
  
) AS k2 ON t2.Datum1 k2.MaxVonDatum1
INNER JOIN tbl1 AS t1 ON t2.Key1 t1.Key1
Ulrich
knobbi38 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.08.2019, 22:06   #3
trekking1
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Ulrich,

vielen Dank für Deinen Ansatz. Leider gibt der mir nur den Maximalen Datensatz der tbl2 an und nicht wie erhofft alle Max Werte in Abhängigkeit des FK der tbl2.
Ein Group by mit dem FK in der Unterabfrage bringt nichts. Habe ich probiert, es werden dann aber alle Datensätze zurückgegeben.
Falls Du eine Idee hast, was man ändern muss wäre das super.

Viele Grüße
trekking
trekking1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.08.2019, 22:41   #4
knobbi38
MOF User
MOF User
Standard

Hallo trekking,

das ist genau das, was du in #1 beschrieben hast. Wenn du etwas anderes erreichen möchtest, mußt du das nochmal genau beschreiben, am besten mit einem Beispiel, z.B. eine Texttabelle mit den Ausgangsdaten -> gewünschtes Ergebnis.

Gruß Ulrich
knobbi38 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.08.2019, 23:13   #5
trekking1
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Ulrich,

wie immer ist es schwer auszudrücken. Sorry dafür. Deshalb Danke für den Vorschlag mit den "gefüllte Tabellen". (Hoffe dass das so passt)

Code:

tbl1
Key1   string1     string2       string3
1        test1         test2         test3
2        test1.1      test1.2      test3.3
3        test1.2      test1.3      test3.3

tbl2
key2   Key1     Datum1           string4   string5
1        1          01.12.2018      test4      test5
2        1          01.12.2019      test4.1   test5.1

3        2          10.12.2017       test       test
4        2          15.12.2018       testi      testi
5        2          13.12.2019       testn     testn

6        3          01.01.2017       testm    testm
7        3          03.01.2018       testo     testo
(Habe eine Leerzeile eingefügt um es deutlicher zu machen. Im Orginal ist es nicht so schön sortiert :)

Gewünschtes Ergebnis
Key1      Key2      Datum1           String1        String2       String3       String4     string5
1           2       01.12.2019       test1          test2         test3         test4.1     test5.1
2           5       13.12.2019       test1.1        test1.2       test3.3       testn       testn
3           7       03.01.2018       test1.2        test1.3       test3.3       testo       testo
Also zu jedem Key1 in tbl2 den Maxwert.

Hoffe es ist nun verständlich rübergekommen.
Danke für Deine Unterstützung.
Viele Grüße
trekking

Geändert von trekking1 (17.08.2019 um 23:35 Uhr).
trekking1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.08.2019, 01:16   #6
knobbi38
MOF User
MOF User
Standard

Hallo Trekking,

so geht das schon viel besser. Zwei Ansätze:
  1. mit SubQuery:
    Code:

    SELECT tbl2.key1,tbl2.key2,tbl2.datum1,
           tbl1.string1,tbl1.string2,tbl1.string3,
           tbl2.string4,tbl2.string5
    FROM   (tbl2 INNER JOIN tbl1 ON tbl2.key1 = tbl1.key1)
           INNER JOIN (
             SELECT key1,Max(datum1) AS MaxVonDatum1
             FROM   tbl2
             GROUP  BY key1
           ) AS m1
           ON ( tbl2.key1 = m1.key1 )
                AND ( tbl2.datum1 = m1.maxvondatum1 )
    ORDER  BY tbl2.key1;
  2. ohne SubQuery:
    Code:

    SELECT t21.key1,t21.key2,t21.datum1,
           t1.string1,t1.string2,t1.string3,
           t21.string4,t21.string5
    FROM   tbl1 AS t1
           INNER JOIN ( tbl2 AS t21
                        LEFT JOIN tbl2 AS t22
                               ON ( ( t21.key1 = t22.key1 )
                                    AND ( t22.datum1 > t21.datum1 ) ) )
                   ON t1.key1 = t21.key1
    WHERE  t22.datum1 IS NULL
    ORDER  BY t21.key1;
    Diese Variante geht nur in der SQL-Ansicht der QBE !!!
    *Nach einer Idee von Tomer Shay @ EverSQL
Auf jeden Fall sollte für tbl2.Datum1 ein Index angelegt werden.

Gruß Ulrich
knobbi38 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.08.2019, 10:17   #7
trekking1
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Super Ulrich,

das funktioniert.

Vielen lieben Dank!!!!!!!!!!!!!!!!!!

War bei meiner ersten Lösung nicht weit davon entfernt hatte aber das Problem mit dem Group By.
Ein AND in einem ON Statement hatte ich bisher noch nicht verwendet/gebraucht.
Allerdings lässt sich auch die erste Lösung zumindest bei mir nicht im QBE anzeigen. Stört mich aber nicht, komme mit der SQL Ansicht (meist) gut zu recht

Nochmal vielen lieben Dank und einen schönen Sonntag

trekking
trekking1 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:51 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.