我试图在代码中实现一个查询,该查询使我能够计算收到的评分和每篇文章的评分数之间的平均值,并将文章从评分最高的文章排序到平均评分最低的文章
查看下表并实现此查询,一切都很正常。
<?php
$results = $wpdb->get_results("
SELECT comment_id, avg(meta_value) avg_meta_value
FROM {$wpdb->prefix}commentmeta
WHERE {$wpdb->prefix}commentmeta.meta_key = \'rating\'
GROUP BY comment_id
ORDER BY avg_meta_value desc");
foreach ($results as $result)
{
echo $result->comment_id.\'<br>\';
}
当我想与
comments
表格:
即使查询正确:
<?php
$results = $wpdb->get_results("
SELECT comment_id, avg(meta_value) avg_meta_value
FROM {$wpdb->prefix}commentmeta
LEFT JOIN $wpdb->prefix}comments
ON {$wpdb->prefix}commentmeta.comment_id = $wpdb->prefix}comments.comment_ID
WHERE {$wpdb->prefix}commentmeta.meta_key = \'rating\'
GROUP BY comment_id
ORDER BY avg_meta_value desc");
foreach ($results as $result)
{
echo $result->comment_id.\'<br>\';
}
?>
正在执行
print_r($ results);
我得到:
Array( )
我不明白为什么,理解这一步对我进行下一次与post表的连接至关重要,这样我就可以获得所有的值out,为什么要获取数组()?
我怎样才能修复它?
。。。。和
var_dump($result); return me `NULL`
最合适的回答,由SO网友:Valerii Vasyliev 整理而成
您的查询有误
$sql = "SELECT
{$wpdb->prefix}commentmeta.comment_id, avg({$wpdb->prefix}commentmeta.meta_value) avg_meta_value
FROM
{$wpdb->prefix}commentmeta
LEFT JOIN
{$wpdb->prefix}comments
ON
{$wpdb->prefix}commentmeta.comment_id = {$wpdb->prefix}comments.comment_ID
WHERE
{$wpdb->prefix}commentmeta.meta_key = \'rating\'
GROUP BY
{$wpdb->prefix}commentmeta.comment_id
ORDER BY
avg_meta_value desc";
$results = $wpdb->get_results($sql);
foreach ($results as $result)
{
echo $result->comment_id.\'<br>\';
}