You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-user@db.apache.org by jill han <jh...@bynum.com> on 2005/10/31 21:15:41 UTC

How to round a avg

I tried to get a query like:

Select id, round(avg(rating), 2)
>From aTable
Where aId = 11111 and rating > 1
Group by(id);

by the codes:

Criteria crit = new Criteria();
crit.add(aTablePeer.a_ID, 11111);
crit.add(aTablePeer.RATING, 1, Criteria.GREATER_THAN);
crit.addSelectColumn(aTablePeer.ID);
crit.addSelectColumn("ROUND(AVG("+aTablePeer.RATING + "), 2)");
crit.addGroupByColumn(aTablePeer.ID);
List result = aTablePeer.doSelect(crit);
Log.debug("query is " + crit.toString());

However, the above codes caused an exception: 
Turbine.handleException: java.lang.Exception:
org.apache.torque.TorqueException: ORA-00933: SQL command not properly
ended

When I checked the debug code, somehow, the codes were interpreted as 
SELECT aTable.ID, Round(AVG(aTable.RATING), 2) FROM aTable, AVG(aTable 
WHERE aTable.RATING>1 AND aTable.a_ID=11111 

How could ", Avg(aTable" append to From clause?

Thanks in advance.


---------------------------------------------------------------------
To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
For additional commands, e-mail: torque-user-help@db.apache.org


Re: How to round a avg

Posted by Thomas Fischer <tf...@apache.org>.
Which Torque version are you using ? I would guess this is 3.1.x.

The problem is that Torque needs to get the column name of the database 
column from the sql expression. This was done quite rudimental in Torque 
3.1.x (this is the reason for the mutilated column, Torque thinks that 
AVG(aTable is the column name in the table). I am afraid there is nothing 
you can do against it in 3.1.x. 
This was improved a bit in 3.2-rcX, so your code should work with 
3.2-rcX. (By the way, handling is still not optimal in 3.2-rcX, but the 
necessary changes are beyound 3.2 for compatibility reasons)

However, as I see you are using Turbine, it was discovered recently that 
a change in configuration handling before 3.2-rc1 broke the standard 
configuration of the Torque Security service in Turbine, see the 
discussion in the issue tracker,
http://issues.apache.org/scarab/issues/id/TRQS322
However, this is fixed in subversion. So If you want to use the Torque 
Security Service in Turbine with rc1 or rc2, you either need to tweak the 
configuration a bit or build from svn.

     Thomas


On Mon, 31 Oct 2005, jill han wrote:

> I tried to get a query like:
>
> Select id, round(avg(rating), 2)
>> From aTable
> Where aId = 11111 and rating > 1
> Group by(id);
>
> by the codes:
>
> Criteria crit = new Criteria();
> crit.add(aTablePeer.a_ID, 11111);
> crit.add(aTablePeer.RATING, 1, Criteria.GREATER_THAN);
> crit.addSelectColumn(aTablePeer.ID);
> crit.addSelectColumn("ROUND(AVG("+aTablePeer.RATING + "), 2)");
> crit.addGroupByColumn(aTablePeer.ID);
> List result = aTablePeer.doSelect(crit);
> Log.debug("query is " + crit.toString());
>
> However, the above codes caused an exception:
> Turbine.handleException: java.lang.Exception:
> org.apache.torque.TorqueException: ORA-00933: SQL command not properly
> ended
>
> When I checked the debug code, somehow, the codes were interpreted as
> SELECT aTable.ID, Round(AVG(aTable.RATING), 2) FROM aTable, AVG(aTable
> WHERE aTable.RATING>1 AND aTable.a_ID=11111
>
> How could ", Avg(aTable" append to From clause?
>
> Thanks in advance.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
> For additional commands, e-mail: torque-user-help@db.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: torque-user-unsubscribe@db.apache.org
For additional commands, e-mail: torque-user-help@db.apache.org