这是来自wordpress的comment_meta.在有一个自定义meta_key:评级.
我想获得该帖子所有评级的总和.
这样做的目的是从用户评级中获得平均值.我有评论者的总数,我只需要SUM.
它的使用是针对Schema.org AggregateReview:< meta itemprop =“ratingValue”content =“”/>.
我试图通过jQuery添加值,但由于某种原因,架构没有注册稍后在DOM中添加的文本.
var sum = 0;
$('.comment_rate').each(function(){
numItems = $('.comment_rate').length
sum += (parseFloat($(this).text()) / numItems);
$('span[itemprop="ratingValue"]').text(sum);
});
原始邮政
我有这张桌子(对不起,图片只是我知道如何展示的方式):
我想从匹配的comment_id中总结meta_value.
到目前为止,我有这个,但它整个列不是匹配相同ID的列.
$result = mysql_query('SELECT SUM(meta_value) AS value_sum FROM wp_play_commentmeta');
$row = mysql_fetch_assoc($result);
$sum = $row['value_sum'];
echo $sum;
?>
解决方法:
使用GROUP BY:
SELECT comment_id, SUM(meta_value) AS value_sum
FROM wp_play_commentmeta
GROUP BY comment_id;
在这里看到它:
如果您只想对那些具有评级metakey的人执行此操作,请在WHERE子句中添加该值.像这样的东西:
SELECT comment_id, SUM(meta_value) AS value_sum
FROM wp_play_commentmeta
wHERE meta_key = 'rating'
GROUP BY comment_id;
更新:
加入两个表,以及GROUP BY post_id.像这样的东西:
SELECT
p.post_id,
SUM(m.meta_value) AS value_sum
FROM wp_play_commentmeta AS m
INNER JOIN wp_play_comments AS p ON m.comment_ID = p.comment_Id
wHERE meta_key = 'rating'
GROUP BY p.post_id;
请注意:请停止使用Mysql_ *扩展,不推荐使用它们.此外,您的代码更容易受到SQL Injection的影响.请使用PDO或准备好的语句.
标签:schema-org,php,jquery,sql,mysql
来源: https://codeday.me/bug/20190723/1509803.html