【问题标题】:Oracle doctrine2 Group byOracle 学说2 分组依据
【发布时间】:2013-03-04 19:01:54
【问题描述】:

我不太了解甲骨文。我最近不得不将用 PHP/MySQL 制作的应用程序迁移到 PHP/Oracle。当我使用 Doctrine2 时,我认为这不会那么难,但我在这里遇到了这个查询。这是 Doctrine2 生成的 SQL:

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 查询构建器中做到这一点!

【问题讨论】:

    标签: oracle doctrine-orm oracle11g


    【解决方案1】:

    我认为您的订单应该是ORDER BY b0_.created DESC 而不是ORDER BY b2_.created DESC。当您尝试 ORDER BY 2 DESC 时,它正在工作,因为您按第二列排序 - b0_.created

    【讨论】:

    • 啊哈,我怎么看不到!我将其设为 2 是因为在 select 子句中我可以看到它的第二列,但在学说查询生成器中,我按不同的别名(已加入)进行排序。非常感谢:)
    猜你喜欢
    • 2017-09-21
    • 2011-10-14
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 2011-12-13
    • 2016-01-01
    相关资源
    最近更新 更多