Add together the SUM() of two columns with ExpressionEngine's active record within CodeIgniter
10:40 23 Oct 2013

I'm working at summing two different rows and their field values (forum_total_topics and forum_total_posts) from a MySQL database in ExpressionEngine using the Active Record Class provided. I have tried multiple versions of code to sum the numbers. I have attempted and failed at passing a MySQL query to the request by saying.

$SQL = "SELECT forum_id, sum(forum_total_topics) + sum(forum_total_posts)
FROM exp_forums"

ee()->db->select($SQL); 
$query = ee->db->get('exp_forums');
echo $query;

to echo the total sum, and getting the following error:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

SELECT (SELECT SUM(forum_total_topics) + SUM(forum_total_posts) FROM (exp_forums)

A messy solution

So I've tried splitting the entire request up to find a solution. I finally got the follow piece of code working by returning multiple arrays and summing those, but it looks quite messy. How, can I return and sum the two rows from the table in one line or so?

$topics = ee()->db->select_sum('forum_total_topics')->get('exp_forums');
foreach($topics->result_array() as $topicrow) {
    $totalTopics = $topicrow['forum_total_topics'];
}

$posts = ee()->db->select_sum('forum_total_posts')->get('exp_forums');
foreach($posts->result_array() as $postrow) {
    $totalPosts = $postrow['forum_total_posts'];
}

$total = $totalTopics + $totalPosts;

Any suggestions would be greatly appreciated!

Tried suggestions

I attempted suggestions like so,

$SQL = "SELECT forum_id, SUM(forum_total_topics + forum_total_posts) AS total
FROM exp_forums
GROUP BY forum_id";

$query = ee()->db->select($SQL); 
echo $query;

With this error instead.

A PHP Error was encountered Severity: 4096 Message: Object of class CI_DB_mysql_driver could not be converted to string Filename: libraries/Functions.php(679) : eval()'d code Line Number: 98

php codeigniter activerecord sum expressionengine