SQL-запрос, который я имею, может идентифицировать Max
время редактирования из 3 таблиц, которые он объединяет:
Select Identity.SSN, Schedule.First_Class, Students.Last_Name,
(SELECT Max(v)
FROM (VALUES (Students.Edit_DtTm), (Schedule.Edit_DtTm),
(Identity.Edit_DtTm)) AS value(v)) as [MaxEditDate]
FROM Schedule
LEFT JOIN Students ON Schedule.stdnt_id=Students.Student_Id
LEFT JOIN Identity ON Schedule.std_id=Identity.std_id
Мне нужно, чтобы это было в SQLAlchemy, чтобы я мог ссылаться на столбцы, используемые в других местах моего кода. Ниже приведена самая простая версия того, что я пытаюсь сделать, но это не работает. Я попытался изменить способ запроса, но я либо получаю ошибку SQL, в которой я использую VALUES
неправильно, либо она не присоединяется должным образом и возвращает мне самое высокое значение в этих столбцах, не сопоставляя его с внешним запросом.
max_edit_subquery = sa.func.values(Students.Edit_DtTm, Schedule.Edit_DtTm, Identity.Edit_DtTm)
base_query = (sa.select([Identity.SSN, Schedule.First_Class, Students.Last_Name,
(sa.select([sa.func.max(self.max_edit_subquery)]))]).
select_from(Schedule.__table__.join(Students, Schedule.stdnt_id == Students.stdnt_id).
join(Ident, Schedule.std_id == Identity.std_id)))