2013-03-04 4 views
0

Я не знаю, оракул много. Недавно мне пришлось перенести приложение, созданное в PHP/MySQL, в PHP/Oracle. Поскольку я использовал Doctrine2, я думал, что это будет не так сложно, но я застрял в этом вопросе здесь. Это SQL генерируется Doctrine2: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!

ответ

0

Я думаю, что ваш заказ будет ORDER BY b0_.created DESC, а не ORDER BY b2_.created DESC. Когда вы пробовали ORDER BY 2 DESC, он работает, потому что вы заказываете 2-й столбец - b0_.created

+0

ahhh, как я мог этого не видеть! Я сделал это 2, потому что в предложении select я мог видеть его второй столбец, но в построителе запросов doctrine я заказывал другой псевдоним (который был присоединен). Большое спасибо :) – Broncha