【问题标题】:PHP | left join avg query give me Array()PHP | left join avg query 给我 Array()
【发布时间】:2020-10-25 14:03:54
【问题描述】:

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

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

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

【问题讨论】:

  • 您确定您复制的代码正确吗?因为有:ON $wpdb-&gt;prefix} 应该是 ON {$wpdb-&gt;prefix} - 你错过了左大括号
  • @Choinek 我解决了这个问题,谢谢,但我有相同的返回数组()
  • 你只修复了一个地方,还有另外两个地方缺少左括号
  • @Choinek 这不是问题!!!!

标签: php sql wordpress


【解决方案1】:

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

【讨论】:

  • 经常给我array()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2011-02-18
相关资源
最近更新 更多