在EE中使用CodeIgniter对两个SQL行求和


SUM two SQL rows with CodeIgniter in EE

我正在使用提供的活动记录类对 ExpressionEngine 中 MySQL 数据库中的两个不同行及其字段值(forum_total_topics 和 forum_total_posts)求和。我尝试了多个版本的代码来对数字求和。我尝试通过说将MySQL查询传递给请求并失败。

$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;

回显总和,并得到以下错误:

错误号:1064

您的 SQL 语法有误;请查看与您的 MySQL 服务器版本对应的手册,了解在第 2 行的 '' 附近使用的正确语法

选择 (

选择 总和 (forum_total_topics) + 总和 (forum_total_posts) 从 ( exp_forums ) 中选择 )

混乱的解决方案

所以我尝试拆分整个请求以找到解决方案。我终于通过返回多个数组并对这些数组求和来工作以下代码,但它看起来很混乱。如何,我可以在一行左右的行中返回并汇总表中的两行?

$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;

任何建议将不胜感激!

尝试过的建议

我尝试了这样的建议,

$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;

相反,使用此错误。

遇到 PHP 错误严重性:4096消息:类 CI_DB_mysql_driver 的对象无法转换为字符串文件名: 库/函数.php(679) : eval()'d 代码行号:98

试试这样吧

SELECT forum_id, sum(forum_total_topics+forum_total_posts)
FROM exp_forums
GROUP BY forum_id

SQLfiddle 演示

我相信由于一个小语法错误,您尝试的第一件事不起作用......

它应该是:

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

初始 SELECT 正在添加到您的类函数中,因此它不会出现在您的$SQL中:

 ee()->db->select($SQL);

这就是您的错误开始的原因:

SELECT (SELECT

"尝试的建议"下的代码也是如此。

试试这个

SELECT forum_id, SUM(forum_total_topics + forum_total_posts) AS total
FROM exp_forums
GROUP BY forum_id