1

我正在使用提供的 Active Record 类从 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 行的 '' 附近使用正确的语法

SELECT (SELECT SUM(forum_total_topics) + SUM(forum_total_posts) FROM ( 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 的对象无法转换为字符串文件名:libraries/Functions.php(679):eval()'d 代码行号:98

4

3 回答 3

1

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

它应该是:

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

最初的 SELECT 被添加到你的类函数中,所以它不应该出现在你的 $SQL 中:

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

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

SELECT (SELECT

“Tried Suggestions”下的代码也是如此。

于 2013-10-23T15:55:55.450 回答
1

试试这样

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

sqlfiddle demo

于 2013-10-23T14:51:21.033 回答
0

尝试这个

SELECT forum_id, SUM(forum_total_topics + forum_total_posts) AS total
FROM exp_forums
GROUP BY forum_id
于 2013-10-23T14:55:45.647 回答