2010-04-15 3 views
1

Doctrine ORM에 대한 Taggable 확장에 의해 자동으로 생성 된 쿼리입니다.Doctrine SQL 쿼리 : PostgreSQL에서 작동하지 않습니다.

SELECT t.id AS t__id, t.name AS t__name, COUNT(DISTINCT i.id) AS i__0, 
    (COUNT(DISTINCT i.id)) AS i__1 
FROM taggable_tag t 
LEFT JOIN cms__model__image_taggable_tag c ON (t.id = c.tag_id) 
LEFT JOIN image i ON i.id = c.id 
WHERE t.id IN 
    (SELECT doctrine_subquery_alias.id 
    FROM 
     (SELECT DISTINCT t2.id, (COUNT(DISTINCT i2.id)) AS i2__1 
     FROM taggable_tag t2 
     LEFT JOIN cms__model__image_taggable_tag c2 ON (t2.id = c2.tag_id) 
     LEFT JOIN image i2 ON i2.id = c2.id 
     GROUP BY t2.id HAVING i2__1 > 0 
     ORDER BY i2__1 DESC LIMIT 10) AS doctrine_subquery_alias) 
GROUP BY t.id HAVING i__1 > 0 
ORDER BY i__1 DESC 

MySql을 사용할 때는 작동하지만 PostgreSQL에서는 작동하지 않습니다.

나는 column i2__1 not found 또는 column i__2 not found입니다.

COUNT (DISTINCT)를 사용할 때 별칭이 허용되지 않습니까?
PostgreSQL에서이 쿼리를 어떻게 실행해야합니까?

답변

1

i2__1COUNT(DISTINCT i2.id)로 바꾸고 HAVING - 하위 절의 하위 절에서 COUNT(DISTINCT i2.id)을 삭제할 수 있습니다.

주 선택의 GROUP BY 절에 t__name을 추가해야 할 수도 있습니다.

+0

고마워요, 그게 전부입니다. 이것은 Doctrine이나 PostgreSQL의 버젼에 버그입니까? 아니면이 구문은 PostgreSql에서 전혀 지원되지 않습니다. – takeshin

+0

어떤 제안이 실제로 도움이 되었습니까? –

+0

괄호를 제거해도 아무런 효과가 없었습니다. 별칭 대신 HAVINGs에서 COUNT를 반복해야했습니다 (느려 집니까?). 분명히, GROUP BY에서도 t.name이 필요합니다. – takeshin

관련 문제