2016-06-09 9 views
0

Ich bin seit Stunden auf dieser Abfrage festgefahren und hoffe, ein Access-Guru kann mir helfen.Access Database Ich möchte einen Datensatz mit dem neuesten Datum aus einer anderen Tabelle holen

Ich schreibe eine SELECT-Abfrage zum inneren Join mit einer anderen Tabelle (1 zu viele). Ich muss nur den Rekord mit dem neuesten Datum holen. Ich recherchiere und probiere viele Beispiele aus, die nicht funktionieren.

Die nächstgelegene ich gewesen ist dies ein

SELECT 
tblData.RecentDate, 
tblData.ID, 
tblData.Name, 
tblData.Address 

FROM [table1] 

INNER JOIN 
     ( SELECT Top 1 * 
      FROM [table2] bh1 
      ORDER BY bh1.RecentDate DESC 
     ) tblData 
ON [table1].[ID] = tblData.[ID]) 

Die Top 1 nicht mir für jede ID einen Datensatz nicht geben. Wenn ich die Top 1 entferne, sehe ich alle Datensätze mit der ID, aber ich habe festgestellt, dass das Feld RecentDate leer ist. Wenn ich die oberste 1 in der Abfrage belasse, sind Datensätze für ID 1 und 4 nicht im Ergebnis enthalten.

Ich habe auch versucht die folgenden

INNER JOIN 
     ( SELECT Max(bh1.RecentDate) as RecentDate, bh1.Name, branchhistory.Address, bh1.City, 
      FROM [table2] bh1 
      GROUP BY bh1.ID 
     ) tblData 
ON [table1].[ID] = tblData.[UDID] 

Diese Abfrage funktioniert nur, wenn ich wählen Max (bh1.RecentDate) als RecentDate, bh1.ID und die bh1.ID GROUPBY ... Aber ich habe andere Felder abzurufen, was erfordert, um der Gruppe By hinzuzufügen, und wird nur 1 Datensatz nicht zurückgeben.

Von meinem inneren Join muss ich den Datensatz mit vielen Feldern abrufen und mit dem letzten Datumswert abrufen.

Ich habe gerade versucht, die folgenden aber nicht alle IDs kommen Jede Hilfe

zurück
INNER JOIN 
     ( SELECT * 
      FROM [table2] bh1 
      WHERE bh1.RecentDate= (SELECT Max(bh2.RecentDate) from [table2] as bh2 WHERE bh1.ID = bh2.ID) 

     ) tblData 
ON [table1].[ID] = tblData.[ID] 

wird sehr geschätzt.

Dank

+2

Sie sind ziemlich nah dran siehe [Nach sku gruppieren, max date SQL] (http://stackoverflow.com/a/37555243/119477) –

+0

Gibt es mehr zu Ihrer ersten Abfrage? Sie haben drei öffnende Paren 'FROM ((([table1]', aber nur einen Abschluss). – BJones

Antwort

0

speichern als permanente Abfrage:

SELECT ID, Max(RecentDate) AS MaxDate FROM table2 GROUP BY ID 

Dann Join-Tabelle 1 auf diese Abfrage von ID und dann auf table2 von ID und MaxDate = Recentdate

Verwandte Themen