【问题标题】:In Codeigniter : How to Count in table using Join in mysql在 Codeigniter 中:如何在 mysql 中使用 Join 计数表
【发布时间】:2017-04-17 12:21:05
【问题描述】:

我有两张桌子公司,评分

公司有两列-

  • v_id
  • 公司名称

user_ratings 有三列

  • r_id
  • v_id

在这个比率 v_id 列中,我有 company_id (v_id),它有两个不同的评级,当我每次计算一家公司的评级时,我只得到一个。如何计算公司的评分。

function get_list() {

        $this->db->select('company.company_name, COUNT(user_ratings.rate) as rate');
        $this->db->from('company_details');
        $this->db->join('user_ratings', 'company.v_id = user_ratings.v_id');
        $this->db->group_by('company.company_name, rate');
        $query = $this->db->get();

        return  $query->result();
    }

【问题讨论】:

  • 由于goup_by,它只返回用户评分表中的一条记录。删除group by后尝试
  • 你也可以按照下面的回答..
  • 在删除 group by 后,我收到错误,例如在没有 GROUP BY 的聚合查询中

标签: php mysql codeigniter


【解决方案1】:

您已将结果与company_namerate 分组。这就是为什么它将所有记录的计数返回为 1。仅按公司名称分组将返回所需的结果。

改变这个

$this->db->group_by('company.company_name, rate');

$this->db->group_by('company.company_name');

另外,company 被用作company_details 表的别名,但它没有被创建。

$this->db->from('company_details AS company');

【讨论】:

  • 它提供了正确的数据。 sqlfiddle.com/#!9/757778/2。对于公司 ID 3,只有 1 个评分,因此评分值为 1。对于公司 ID 1,有 2 个评分,因此评分值为 2。
  • 我有点震惊,因为这个查询在 sqlfiddle 上运行但是在 mysql 上这个查询抛出错误。
  • SELECT 列表的表达式 #1 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“search.company.v_id”;这与 sql_mode=only_full_group_by 不兼容
  • 从你的 sql 配置文件中移除 sql 模式 (FULL_GROUP_BY)
  • 谢谢你们......我不需要删除(FULL_GROUP_BY)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2013-06-04
  • 2017-12-24
  • 1970-01-01
相关资源
最近更新 更多