2012-03-22 9 views
6

DQLのサブクエリの結果からSELECTを実行したいと思います。 SQLで次のように行うための同等:DQLのサブクエリからの選択

SELECT u FROM (
    SELECT u, COUNT(u) as total 
     FROM Utterance u LEFT JOIN u.recordings r 
     WHERE r.speaker IS NULL OR r.speaker <> 5 
     GROUP BY u.id 
    ) matched WHERE total < 5 

SELECT * FROM (SELECT foo1,foo2 FROM bar) where foo1='something'; 

私はに実行しています問題は、それがそのエラーを生成

Error: Class '(' is not defined 

実際のDQLがあると文句を言いますということです繰り返しますが、どのようにしてサブクエリから選択を実行できますか? DQLを使用して

答えて

5

私はそれは不可能ですかなり確信しているが、あなたが本当にそれを必要とする場合は、チェックしたいかもしれません:

Doctrine Native SQL。 (examples、同じページからのパーマリンク)

これははるかに複雑ですが、ネイティブクエリを送信して実行することも自由にできます(私にとって難しい部分はオブジェクトの水和でした)。

最後のコードセグメントはあなたが達成しようとしているものを何も似ている一方、何のサブクエリを必要としない簡単な方法があります:

SELECT u 
    FROM Utterance u LEFT JOIN u.recordings r 
    WHERE r.speaker IS NULL OR r.speaker <> 5 
    GROUP BY u.id HAVING COUNT(u) < 5 

・ホープ、このことができます...

+0

私の最終的なクエリは、それより少し複雑である必要がありましたが、私はあなたがそのようなHAVINGを使用できることを知らなかったが、そのヒントのおかげで!最後に、ネイティブSQLとオブジェクトの水和を行いました。ありがとう! – drewag

+3

@drewagであり、ここで共有した場合、ネイティブクエリによる最終結果は非常に興味深いものになります。 (私はそれがほぼ4年経ちましたが... ...)ありがとう –

+2

水分補給の問題をきれいに解決できましたか? –

関連する問題