【发布时间】:2021-12-01 18:08:37
【问题描述】:
收集第一次体验 mit jooq 的 multiset 我试图弄清楚如何根据 multiset 的一些标准对结果集进行排序。 考虑一个带有产品表的数据结构,每个产品都可以分配任意数量的存储空间。
使用此查询获取产品时:
List<ProductFilterItem> items =
dslContext
.select(
PRODUCT.ID,
PRODUCT.NAME
multiset(
select(
PRODUCT_STORAGE.ID,
PRODUCT_STORAGE.PRODUCT_ID,
PRODUCT_STORAGE.STOCK
PRODUCT_STORAGE.MIN_STOCK
)
.from(PRODUCT_STORAGE)
.where(PRODUCT_STORAGE.PRODUCT_ID.eq(PRODUCT.ID))
).as("storage").convertFrom(r -> r.into(ProductStorageItem.class))
)
.from(PRODUCT)
.where(queryCondition)
.fetchInto(ProductItem.class)
如何根据多重集的标准对结果进行排序。
例如,将那些分配了存储空间的放在第一位。
orderBy(inline(3).desc())
给出了想要的结果,但对我来说,不清楚实际的排序比较在做什么。
如何实现更复杂的排序, 例如排序方式
min(
(PRODUCT_STORAGE.STOCK - PRODUCT_STORAGE.MIN_STOCK)
.divide(PRODUCT_STORAGE.MIN_STOCK.multiply(0.01))
)
或其他基于股票价值的计算。
感谢您的帮助!
亲切的问候, 安德烈亚斯
【问题讨论】: