2017-06-22 8 views
1

問題

テーブルに属するコレクションで最も頻繁にアイテムを取得しようとしています。例えば、私がTable 'Library'とTable 'Book'を持っていて、 'Library'が 'Book'のコレクションを持っていれば、すべての図書をすべての図書館から検索したいと思います。この結果から、私は最も頻繁な本が欲しいです。問題は、可能であれば、これが1つのクエリである必要があるということです。私がすべての本のリストを手に入れたが、出現順にソートしても大丈夫だろう。JPQL - コレクションで最も頻繁に入手するアイテムを取得する

私は

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

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

を試してみた何秒1は、悲しいことに、それは自分自身で各コレクションをソートし、すべての書籍で注文していません。

さらに詳しい情報が必要な場合は、もちろん提供できます。

私は、誰かが私を助けることができると思います:(

+0

すべての本の中から一番頻繁に読んでみたいと思っている人は、本から選ぶことはできないのですか?なぜライブラリを選んだのでしょうか?おそらく私はあなたの要求を得ていません – Zeromus

答えて

0

あなたの最初のクエリはかなり近いクエリのANSI標準バージョンです。いくつかのデータベースは、1行のみフェッチするTOPまたはLIMITを使用

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

+1

OPはJ PQL、SQLではない –

+0

"状態フィールドのパス 'g.categories'はコレクションタイプに解決できません。ここでgはマイライブラリ、カテゴリはマイブックです。 – Anthony

+0

@MikeAdamenkoが正しい。 – Anthony

関連する問題