次のようなテーブルがあるとします。
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
ここで、次のような UserActions 用に 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 では、どうすればそのようなクエリを実行できますか?