To add to this, I will also want to be able to "ORDER BY" those three new
columns (totalviews, totalclicks, grandtotal) as well.. I'm using mySQL 5
and innodb tables.

I saw this page:
http://dev.mysql.com/doc/refman/5.0/en/user-variables.html

But it says:
"
Note: In a SELECT statement, each expression is evaluated only when sent to
the client. This means that in a HAVING, GROUP BY, or ORDER BY clause, you
cannot refer to an expression that involves variables that are set in the
SELECT list. For example, the following statement does not work as expected:

mysql> SELECT (@aa:=id) AS a, (@aa+3) AS b FROM tbl_name HAVING b=5;
"

So that seems pretty useless for my needs.

And I'm using this in combination with PHP and Ruby for what it's worth.

It seems silly that I would have to use PHP's multisort() to sort/order data
that I already have in a database, and it seems silly that I should have to
use PHP to do basic math on the table when mySQL can do it probably faster.

> -----Original Message-----
> From: Daevid Vincent [mailto:[EMAIL PROTECTED] 
> Sent: Monday, April 17, 2006 7:33 PM
> To: mysql@lists.mysql.com
> Subject: How can I use a value computed in my SQL query for 
> further computations?
> 
> Here is a paired down version of a query I want to make. How 
> can I get the
> "grandtotal" column? I know about the "HAVING" clause, but 
> that's only going
> to be good for weeding out rows I don't want. I just want to 
> do some basic
> math here.
> 
> SELECT  a.*, 
>       DATE_FORMAT(a.created_on,'%m/%d/%y %h:%i:%s %p') AS
> created_on_format, 
>       DATE_FORMAT(a.timestamp,'%m/%d/%y %h:%i:%s %p') AS 
> timestamp_format,
> 
>       (views * ppview) AS totalviews, 
>       (clicks * ppclick) AS totalclicks,
>       totalviews + totalclicks AS grandtotal
> FROM advertisements a;
> 
> There has got to be a better way than this (which would be a 
> colossal waste
> of computing power to recalculate something that was just done!):
> 
> SELECT  a.*, 
>       DATE_FORMAT(a.created_on,'%m/%d/%y %h:%i:%s %p') AS
> created_on_format, 
>       DATE_FORMAT(a.timestamp,'%m/%d/%y %h:%i:%s %p') AS 
> timestamp_format,
> 
>       (views * ppview) AS totalviews, 
>       (clicks * ppclick) AS totalclicks,
>       ((views * ppview) + (clicks * ppclick)) AS grandtotal
> FROM advertisements a;
> 
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    
> http://lists.mysql.com/[EMAIL PROTECTED]
> 
> 


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to