Попытка выбрать всех студентов в Access 2016 и присоединиться к одному плану для каждого студента. Работает нормально, но выбран не самый последний план ...
Если я выполнил только подзапрос для конкретного student_id, он работает, и выбран самый последний план.
SELECT dbo_Student.*, a.*
FROM dbo_Student LEFT JOIN (SELECT TOP 1 * FROM dbo_Plan ORDER BY Year
DESC, Version DESC) AS a ON dbo_Student.ID = a.student_id
WHERE Archived = FALSE
ORDER BY Name;
Редактировать
Это самое близкое, что я получил до сих пор, благодаря C perkins:
SELECT s.*, p.*
FROM dbo_Student s LEFT JOIN
(SELECT p1.*
FROM dbo_Plan p1 INNER JOIN
(SELECT p2.student_id, MAX(p2.ID) As MaxID
FROM dbo_Plan p2
GROUP BY p2.student_id
) pAgg
ON p1.student_id = pAgg.student_id
AND p1.ID = pAgg.MaxID
) p
ON s.id = p.student_id
WHERE Archived = FALSE
ORDER BY Name;
Предполагается, что максимальный идентификатор - это самый последний План (Год DESC, Версия DESC). И это работает почти всегда, но это не безопасно.