Для нашего приложения неправильно указана дата последнего доступа, и я пытаюсь обновить его.
Чтобы увидеть, какую дату он сейчас показывает, я могу сделать;
select LoginID, ActionDate
From LoginHistory
Теперь, чтобы увидеть, какая дата должна быть на самом деле, я делаю:
select lg.UserName, lg.LoginID, lg.Activated, id.Title, max(ih.ActionedDate) as LastAccessed
from Login lg
left join (
ItemLoginAssociation la
join ItemView id
on id.ItemId = la.ItemID
) on la.LoginID = lg.LoginID
left join ItemHistory ih
on id.ItemId = ih.ActionedBy and id.VersionRank =1
where action= 'View'
group by lg.UserName, lg.LoginID, lg.Activated, id.Title
order by LastAccessed
Я хотел бы сравнить ActionDate из первого запроса и дату LastAccessed из второго запроса по идентификатору входа, и если дата во втором запросе более поздняя, чем дата в первом, замените дату первого запроса на вторая дата запроса, если это имеет смысл?
Как я могу это сделать?
Вы можете оставить свой второй запрос:
select lh.LoginID, lh.ActionDate, x.LastAccessed
From LoginHistory lh
left join (
select lg.UserName, lg.LoginID, lg.Activated, id.Title, max(ih.ActionedDate) as LastAccessed
from Login lg
left join (
ItemLoginAssociation la
join ItemView id
on id.ItemId = la.ItemID
) on la.LoginID = lg.LoginID
left join ItemHistory ih
on id.ItemId = ih.ActionedBy and id.VersionRank =1
where action= 'View'
group by lg.UserName, lg.LoginID, lg.Activated, id.Title
-- order by LastAccessed
) x on x.loginID = lh.LoginID
order by
закомментирован, потому что заказывать подзапрос довольно бесполезно.
P.S. Если оба запроса работают в вашей СУБД, этот запрос тоже должен работать, потому что это довольно стандартный SQL.
Это то, что я искал, спасибо
Извините, обновил свой вопрос