0

私は2つのテーブルを持っています:

author (id, first_name, last_name)
books (id, title, rate, author_id)

そして、最も評価の高い本 (著者ごとに 1 つ) の著者を取得する必要があります。

SQLで:

SELECT a.*, highest_rated_book.*
      FROM authors a
      LEFT JOIN (SELECT * FROM books b ORDER BY b.rate DESC) AS highest_rated_book
      ON a.id = highest_rated_book.author_id
      GROUP BY highest_rated_book.author_id
      ORDER BY a.id;

しかし、Doctrine 2 でこれが必要です。私が抱えている最大の問題は、左結合と副選択を組み合わせることです。

これは可能ですか?

4

1 に答える 1

1

DQLを使用すると、関連付けられているエンティティのみに参加できるようです(http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-languageを参照)。 .html#from-join-and-index-by)。

できることは、生のSQLを使用できるネイティブクエリを使用することです。

Doctrine 2を使用したネイティブSQLの詳細については、http://docs.doctrine-project.org/en/latest/reference/native-sql.htmlを参照してください。

于 2012-06-15T10:06:12.853 に答える