squeryl中的多个左连接

时间:2013-06-21 20:51:05

标签: scala left-join squeryl

我的数据模型由用户组成。用户可以有多个文件夹,文件夹可以包含多个帐户。

我想运行一个一次性返回上述所有信息的查询。

使用文件夹返回用户的查询如下所示:

val usersWithFolder = from(MySchema.users, MySchema.folders)((u, f) =>
                         where(u.idField === f.userId) select ((u, f)))

我想要一个这样的查询:

join(MySchema.users, MySchema.folders.leftOuter, MySchema.accounts.leftOuter)((u, f, a) =>
                         select(u, f, a)
                         on (u.idField === f.map(_.userId), ???))

如何将帐户映射到文件夹?我无法使用f.idField === a.map(_.folderId),因为看起来fList

提前致谢

弗洛

1 个答案:

答案 0 :(得分:1)

我认为f会是Option,所以这样的事情应该有效:

join(MySchema.users, 
  MySchema.folders.leftOuter, 
  MySchema.accounts.leftOuter)((u, f, a) =>
    select(u, f, a)
    on (u.idField === f.map(_.userId), 
      f.map(_.idField) === a.map(_.folderId))
  )