首页 > 解决方案 > PHP | left join avg query 给我 Array()

问题描述

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

分贝值

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

   <?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表进行下一次join是必不可少的,这样我才能把所有的值都取出来,为什么我得到array()?

我该如何解决?

.... 和

var_dump($result); return me `NULL`

标签: phpsqlwordpress

解决方案


也许你需要换SELECT comment_id, avg(meta_value) avg_meta_valueSELECT comment_id, avg(meta_value) AS avg_meta_value


推荐阅读