在 Squeryl 中使用聚合连接多个表
Posted
技术标签:
【中文标题】在 Squeryl 中使用聚合连接多个表【英文标题】:Join multiple tables with aggregation in Squeryl 【发布时间】:2013-04-25 14:41:54 【问题描述】:我正在尝试将卡片与零件连接起来,然后将总库存值加入零件(某些零件没有库存行)。
我有以下我认为可行的东西..
def stockPerBase = from(stock)(s => groupBy(s.base) compute(sum(s.quantity)))
def allCardsWithStock =
join(cards, parts, stockPerBase.leftOuter)((c,p,s) =>
on(c.partId === p.id, p.base === s.map(_.key))
select(c, p, s.measures))
但是我得到以下错误:
too many arguments for method on: (table: org.squeryl.Table[A])(declarations: A => Seq[org.squeryl.dsl.ast.BaseColumnAttributeAssignment])Unit
[error] on(c.partId === p.id, p.base === s.map(_.key))
非常感谢任何有关我如何进行此类查询的帮助。
【问题讨论】:
【参考方案1】:select
子句应位于查询中的 on
之前。尝试颠倒这两个子句的顺序,它应该可以工作。
【讨论】:
以上是关于在 Squeryl 中使用聚合连接多个表的主要内容,如果未能解决你的问题,请参考以下文章
Postgres - 连接三个表并在查询中对数据使用聚合函数