私は、MySQLと正常に実行するクエリがある:意味論的エラー、symfonyのDQL
SELECT *
FROM td_user u
JOIN td_ranking ranking ON ranking.user_id = u.id
JOIN (
SELECT x.user_id,
MAX(x.id) AS default_id
FROM td_ranking x
GROUP BY x.user_id
) y
ON y.user_id = ranking.user_id
AND y.default_id = ranking.id
私はsymfonyで実行、それをするためにDQLでそれを変換しよう:
$query = $this->_em->createQuery('
SELECT u.*,ranking.*
FROM UserBundle:User u
JOIN UserBundle:Ranking ranking
WITH ranking.user_id = u.id
JOIN (
SELECT x.user_id, MAX(x.id) AS default_id
FROM UserBundle:Ranking x
GROUP BY x.user_id
) y
ON y.user_id = ranking.user_id
AND y.default_id = ranking.id'
);
$results = $query->getResult();
私はこのエラーがあります:
[意味論的エラー]行0、列113に近い '(、x.user_idをSELECT':エラー:クラス '(' が定義されていません
あなたはどんな考えがありますか?ありがとう!あなたはランキングエンティティのためのuser_idプロパティを持っていない
。 –
ああそう...しかし、それをどうやって?私はこれを試してみたが、結果は同じです。 " をuをSELECT *、ランキング* UserBundle FROM:ユーザUはUserBundleのJOIN :ランキングranking.user_id = u.id WITH ランキングは、JOIN( SELECT x.userを、MAX(x.id)はAS default_id UserBundle FROM:x.user BYランキングX GROUP)y.user = ranking.user ON Y AND y.default_id = ranking.id」実際に – Tom59
、IはOneToManyを有しますユーザーとランキングの関係。多くのランキングはユーザーにリンクできます。私の要求では、各ユーザーの最後のランキングを取得したいと思います...あなたはアイディアを持っていますか? – Tom59