【问题标题】:scala slick - complex function in select clausescala slick - 选择子句中的复杂函数
【发布时间】:2013-03-19 21:54:43
【问题描述】:

我有一个连接表,其中包含 'a'、'b' 的 id 和几个与 ab 关系相关的 Option[Long]。我想这样查询它:

select a_id, sum(longField is not null) from a_b_info group by a_id

(忽略此查询中的 b_id...)

我尝试了各种方法,但都无法实现。
如何使用 slick 做到这一点?

【问题讨论】:

  • 你确定这是有效的 SQL 吗?
  • 我忘记了 from 子句,但除此之外它是有效的、有效的和经过测试的。添加了 from 子句...

标签: scala sum aggregate slick notnull


【解决方案1】:

您可以创建自己的函数。 Slick 的可扩展性很强,但是添加一个功能是一个深入的研究。作为对this question 的回答,我扩展了驱动程序以添加as 函数。您需要采取类似的步骤来解决您的问题。

【讨论】:

  • 或者,您不能只映射列并具有相同的效果吗?或者,这就是你的as 函数的作用吗?
  • 我不确定这是否具有相同的效果。带有as 函数的示例展示了如何生成 Slick 不直接支持的任意 SQL。
  • 我希望得到一个涉及创建我自己的函数的答案(也许是 SimpleExpression?)。我自己尝试这样做,但遗憾的是无法解决我的问题。此外,关于自定义函数的文档非常基本也没有帮助......我还没有尝试过你的解决方案,但我很确定它会起作用。我只需要添加一个“asSum”关键字,它将用 sum(expr) 包装前一个表达式。等我再给自定义函数一些方法后,我会试试看。
  • 是的,我把它设为FunctionSymbol,你可以把它换成别的东西。最合适的。
猜你喜欢
  • 2023-04-10
  • 2016-11-21
  • 2015-12-25
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
相关资源
最近更新 更多