Таблица левого соединения с максимальным значением и другим столбцом из второй таблицы

#sql #ms-access

#sql #ms-access

Вопрос:

У меня есть две таблицы со структурой, подобной этой:

 table1
ID |Field1|Field2

table2
ID|Table1_ID|Date|Notice
  

Мне нужно объединить эти таблицы слева в MS Access SQL на основе максимальной даты из второй таблицы, но также включить поле «Уведомление» в новую таблицу, поэтому результат должен быть таким:

 ID|Field1|Field2|Max_Date|Notice
  

Я могу объединять таблицы на основе максимальной даты следующим образом:

 SELECT t1.ID, t1.Field1, t1.Field2, t2.Max_date
FROM table1 AS t1
LEFT JOIN
[SELECT Table1_ID, MAX(Date) AS Max_date 
FROM table2
GROUP BY Table1_ID] AS t2
ON t1.ID = t2.Table1_ID
  

Как я могу включить поле ‘Notice’ также в этот запрос?

Ответ №1:

JOIN снова:

 SELECT t1.ID, t1.Field1, t1.Field2, t2m.Max_date, t2.Notice
FROM (table1 AS t1 LEFT JOIN
      (SELECT Table1_ID, MAX(Date) AS Max_date 
       FROM table2
       GROUP BY Table1_ID
      ) AS t2m
      ON t1.ID = t2m.Table1_ID
     ) LEFT JOIN
     table2 as t2
     ON t2.Table1_ID = t2m.Table1_ID AND t2.Date = t2m.Max_Date