2017-06-22 54 views
1

问题

我试图获取属于表的集合中最频繁的项目。例如,如果我有Table'Library'和Table'Book'并且'Library'具有'Book'集合,我想从所有库中检索所有书籍。从这个结果,我想要最频繁的书。问题是我需要这是一个查询,如果可能的话。如果我刚刚获得所有书籍的列表,但按事件排序,也可以。JPQL - 获取集合中最常见的项目

我已经试过

SELECT l.books, COUNT(l.books) AS occur FROM Library l

SELECT b FROM Library l, l.books b ORDER BY b.name

第二个可悲的是不被所有的书顺序,排序等等,每个集合。

如果需要更多信息,我当然可以提供。

我希望有人能帮助我:(

+0

如果你想从所有的书中最频繁的书你不能只从书桌选择?为什么从图书馆选择?也许我没有得到你的要求 – Zeromus

回答

0

你的第一个查询是非常接近的查询的ANSI标准版本是:

SELECT l.books, COUNT(l.books) AS occur 
FROM Library l 
ORDER BY occur DESC 
FETCH FIRST 1 ROW ONLY; 

有些数据库使用TOPLIMIT去取只有一行

+1

请注意OP要为J的答案PQL,而不是SQL –

+0

“状态字段路径'g.categories'无法解析为集合类型”,其中g是我的库,而类别是我的书。 – Anthony

+0

@MikeAdamenko正确。 – Anthony