Doctrine 1.2 を使用してリレーショナル除算を実行しようとすると、以下のクエリで見つかった DISTINCT のように見えるものに対して「重複したエイリアス」エラーが表示されます。
SELECT
Data.ID
FROM
Data
INNER JOIN
TaggedData ON (Data.id = TaggedData.data_id)
INNER JOIN
Tag ON (Tag.id = TaggedData.tag_id)
WHERE
Tag.id IN ('1' , '2')
HAVING COUNT(DISTINCT tag.iD)=2
クエリからDISTINCTを削除すると、クエリは実行されますが、必要なものが得られません。Doctrine でこの問題を解決する適切な方法はありますか?
特定のコード:
$query = $this->createQuery("p")
->select("p.*")
->innerJoin("p.Data s")
->innerJoin("s.Tags c")
;
$query
->andWhereIn("c.id", $tags)
->addHaving("COUNT(DISTINCT c.id) = ?", count($tags))
;