0

私はオラクルをあまり知りません。最近、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います。groupbyステートメントの集計関数で使用されていないすべての列を指定する必要があることをどこかで読みました。私はそうしましたが、結果は同じです。

誰かが私がどこで間違っているのか教えてもらえますか?ありがとう!

編集:ORDER BY 2 DESCSQL Developerで実行しましたが、クエリビルダーは2を使用しません。Doctrine2クエリビルダーでどのように実行しますか。

4

1 に答える 1

0

ORDER BY b0_.created DESCご注文はではなくである必要があると思いますORDER BY b2_.created DESC。試しORDER BY 2 DESCてみると、2列目で注文しているのでうまくいきます -b0_.created

于 2013-03-04T19:13:54.697 に答える