Oracle doctrine2集团
问题描述:
我不太了解oracle。我最近不得不将PHP/MySQL中的应用程序迁移到PHP/Oracle。正如我使用Doctrine2,我认为这不会那么困难,但我陷入这个查询中。这是由Doctrine2生成的SQL:Oracle doctrine2集团
SELECT a.*
FROM
(SELECT b0_.id AS id0,
b0_.created AS created1,
b1_.businessName AS businessName2,
b1_.isVerified AS isVerified3,
COUNT(b2_.id) AS sclr4
FROM br_merchants b1_
INNER JOIN br_user b0_
ON b1_.id = b0_.id
LEFT JOIN br_campaigns b2_
ON b1_.id = b2_.merchant_id
GROUP BY b0_.id,
b0_.created,
b1_.businessName,
b1_.isVerified
ORDER BY b2_.created DESC
) a
WHERE ROWNUM <= 10
而且我得到ORA-00979: not a GROUP BY expression
。 我读了一些地方,我需要指定聚合函数在group by语句中未使用的所有列。我这样做了,但结果是一样的。
谁能告诉我我哪里出错了!谢谢!
编辑:我没有ORDER BY 2 DESC
它在SQL Developer中工作,但查询生成器不会采取2.所以我怎么在Doctrine2 querybuilder中做到这一点!
答
我认为你的订单应该是ORDER BY b0_.created DESC
而不是ORDER BY b2_.created DESC
。当您尝试ORDER BY 2 DESC
它正在工作,因为您正在按第2列订购 - b0_.created
啊,我怎么看不到这个!我做了2,因为在select子句中,我可以看到它的第二列,但在教义查询生成器中,我正在通过不同的别名(已加入)进行排序。非常感谢 :) – Broncha 2013-03-04 19:17:31