我正在尝试使用Squeryl复制以下查询。
SELECT c.order_number,p.customer,p.base,(
SELECT sum(quantity) FROM "Stock" s where s.base = p.base
) as stock
FROM "Card" c, "Part" p WHERE c."partId" = p."idField";
我有以下代码用于选择卡片和部件,但我看不到在select子句中添加sumation的方法。
from(cards, parts)((c,p) =>
where(c.partId === p.id)
select(c,p)
非常感谢任何帮助!
答案 0 :(得分:3)
在Squeryl中,您可以在查询的from子句中使用任何Queryable
对象。因此,要创建子查询,以下内容应该对您有用:
def subQuery = from(stock)(s => groupBy(s.base) compute(sum(s.quantity)))
from(cards, parts, subquery)((c, p, sq) =>
where(c.partId === p.idField and sq.key === p.base)
select(c.orderNumber, p.customer, sq.measures))
当然,字段名称可能略有不同,只是猜测类定义。如果您想要cards
和parts
的整个对象而不是原始查询中的单个字段,只需将select子句更改为:select(c, p, sq.measures)