Скажем, у меня есть таблица, например:
UserActions
UserId INT
ActionDate TIMESTAMP
Description TEXT
который содержит даты, когда пользователи выполняли определенные действия. Если бы я хотел получить последнее действие, которое выполнил каждый пользователь, мне пришлось бы сделать что-то вроде этого в SQL:
SELECT *
FROM UserActions,
(
SELECT ua.UserId,
max(ua.ActionDate) AS lastActionDate
FROM UserActions ua
GROUP BY ua.UserId
) AS lastActionDateWithUserId
WHERE UserActions.UserId = lastActionDateWithUserId.UserId
AND UserActions.ActionDate = lastActionDateWithUserId.lastActionDate
Теперь предположим, что у меня уже есть структура таблицы, настроенная в scalaquery 0.9.5 для действий пользователя, таких как:
case class UserAction(userId:Int,actionDate:Timestamp,description:String)
object UserActions extends BasicTable[UserAction]("UserActions"){
def userId = column[Int]("UserId")
def actionDate = column[Timestamp]("ActionDate")
def description = column[String]("Description")
def * = userId ~ actionDate ~ description <> (UserAction, UserAction.unapply _)
}
Мой вопрос: в ScalaQuery/SLICK, как я могу выполнить такой запрос?