2016-06-08 8 views
0

Ich bin mit Zugang zu wählen und das Schreiben einer Abfrage eine andere Tabelle zu verbinden, die mehrere Datensätze mit der gleichen ID hat. Also muss ich nur den Rekord mit dem MAX-Datum holen, um nur 1 Rekord zu holen. Ich bekomme immer einen Syntaxfehler.Zugang Inner Join einen Datensatz mit dem Max-Date scheidend wählen einen Datensatz aus einer anderen Tabelle

Hier ist meine normale Inner auf die anderen Tabelle Join:

SELECT 
table2.NameDesc, 
FROM [table1] 
INNER JOIN 
     (
      SELECT [MyDataTable].[ID], [MyDataTable].[NameDesc], MAX([MyDataTable].[MyDate]) as RecentDate 
      FROM [MyDataTable] 
      GROUP BY [MyDataTable].[ID]   
     ) table2 
ON [table1].[ID] = table2.[ID]; 

Normalerweise auf meinem inneren Aussage kommen, ich schreibe so:

INNER JOIN [table3] ON [table1].[ID] = [table3].[ID])

Also muß ich nur 1 holen Aufnahme mit dem MAX-Datum. Ich konnte endlich Klick speichern, aber wenn ich auf der DateSheetView klicken, bekomme ich folgende Fehlermeldung:

"Your query does not include the specified expression "NameDesc" as part of an aggregate function"

Ich bin die Zugriffsabfrage mit der [] Klammer, die von SQL Server unterscheidet.

Wie kann ich diese Access-Abfrage erhalten den Datensatz mit dem max Datum aus einer anderen Tabelle zu arbeiten und zu holen?

Jede Hilfe ist appreaciated.

Dank

Antwort

1

Wenn Sie eine Aggregatfunktion verwenden, wie MAX, müssen Sie alle anderen Spalten enthalten, die Sie als Teil der Gruppe sind wieder durch. Damit die Abfrage ohne Fehler ausführen können, können Sie dies tun:

SELECT 
    table2.NameDesc 
    FROM [table1] 
    INNER JOIN 
    (
     SELECT [MyDataTable].[ID], 
       [MyDataTable].[NameDesc], 
       MAX([MyDataTable].[MyDate]) as RecentDate 
     FROM [MyDataTable] 
     GROUP BY [MyDataTable].[ID], 
        [MyDataTable].[NameDesc]   
    ) table2 
    ON [table1].[ID] = table2.[ID]; 
Verwandte Themen