Сегодня на работе мы вступили в дискуссию о том, как лучше всего выполнить запрос, подобный этому:
Например, предположим, что таблица пользователей:
tblUsers
ID = Autoint
Name = String
и таблица входа в систему:
tblLogin
ID = AUtoint
UserID = Int
IP = String
Browser = String
OS = String
timestamp = DateTime
Какой самый эффективный способ составить список всех пользователей и времени их последнего входа в систему (если когда-либо), и предоставить вывод, такой как:
user | ip | timestamp | browser | os |
-------------------------------------------------
Some User |1.1.1.1 | 12/12/12 | userBA | win |
Other User |1.1.1.1 | 12/12/12 | userBA | win |
And Other |null | null | null | null |
Other Yet |1.1.1.1 | 12/12/12 | userBA | win |
Имейте в виду, что здесь мы хотим, чтобы все пользователи показывались ровно один раз, даже если он никогда не входил в систему, и только самые последние входы в систему (т.е. max (timestamp)).
Есть ли способ сделать это одним оператором SQL?
Мы используем MSSQL 2005.
Заранее спасибо, ребята, Джим