Doctrine でクエリを作成しようとしていますが、問題が発生しています。mysql で必要なクエリを見つけましたが、DQL に変換できないようです。
これが私のMySQLクエリです:
SELECT *
FROM (
SELECT p.id, count(p.id) as count
FROM pear as p
JOIN vote as v ON v.pear_id = p.id
GROUP BY p.id
ORDER BY count DESC
) as t
GROUP BY t.icon_id;
私が次のことをした場合:
return $em->createQuery(
'SELECT * FROM (SELECT p.id, count(p.id) as count from pear as p JOIN vote as v ON v.pear_id = p.id GROUP BY p.id ORDER BY count DESC) as t GROUP BY t.icon_id'
);
次のエラーが表示されます。
[Syntax Error] line 0, col 7: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got '*'
これらの結果を達成するためのより良い方法があるかもしれません。
私は4つのテーブルを持っています:
- アイコン
- 洋ナシ
- 曲
- 投票
梨はアイコンを歌に合わせます。投票はペアに対する投票です。
すべてのアイコンのトップ ナシを見つけようとしています。私のロジックは、アイコンの梨をすべて見つけて、投票数でグループ化することでした。次に、各アイコンの一番上のナシのみを返すようにこれを制限する必要があります。
私の望む最終結果は、アイコンごとに 1 つの Pear オブジェクトのリストです。