Php|Left Join平均查询给我数组()

时间:2020-10-25 作者:user14441695

我试图在代码中实现一个查询,该查询使我能够计算收到的评分和每篇文章的评分数之间的平均值,并将文章从评分最高的文章排序到平均评分最低的文章

db value

查看下表并实现此查询,一切都很正常。

   <?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 表格:

db value

即使查询正确:

        <?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`

1 个回复
最合适的回答,由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>\';
        }

相关推荐

将数据从复选框保存到wpdb数组

我有几个水果复选框,但当保存到wpdb数据库时,它只保存最后一个检查的水果复选框,变量$check接收vardump字符串(6)”;香蕉“;字符串(5)“”;苹果公司;在数据库中只出现苹果应该是香蕉,苹果在同一个字段中有一个数组。不应该只保存最后标记的 foreach( $checkboxes as $check ) { var_dump( $check); } global $wpdb; $wpdb->insert(\'data\