1
這是一個由Taggable擴展自動生成的用於Doctrine ORM的查詢。Doctrine SQL查詢:適用於MySQL,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上工作?
謝謝,就是這樣。這是一個在Doctrine或我的PostgreSql版本中的錯誤?或者只是PostgreSql不支持這種語法? – takeshin 2010-04-15 17:51:11
哪個建議對你有幫助? – 2010-04-15 17:56:15
刪除括號什麼也沒做。我不得不在HAVING中重複COUNT而不是別名(它會變慢嗎?)。顯然,在GROUP BY中也需要t.name。 – takeshin 2010-04-15 18:08:14