【问题标题】:Codeigniter group_by and Order_by conflictCodeigniter group_by 和 Order_by 冲突
【发布时间】:2016-08-16 07:40:12
【问题描述】:

我目前正在处理 Codeigniter 查询,我试图在其中获得一堆结果。但是,当我在同一个查询中同时使用 group_by 和 order_by 时,order_by 会被否决并且由于某种原因不适用。

查询如下:

$this->db->select('q.questionNumber, qa.qaId')->from('questions q');
$this->db->join('questionAnswers qa', 'qa.questionId = q.questionId');
$this->db->where('customerId', $customerId);
$this->db->order_by('q.questionNumber', 'desc');
$this->db->group_by('q.subject');
$query = $this->db->get();
$query->result();

【问题讨论】:

    标签: codeigniter group-by sql-order-by


    【解决方案1】:

    使用更新的

    $this->db->select('q.questionNumber, qa.qaId')->from('questions q');
    $this->db->select_max('q.questionNumber' , 'questionNumber'); // added this
    $this->db->join('questionAnswers qa', 'qa.questionId = q.questionId');
    $this->db->where('customerId', $customerId);
    $this->db->order_by('q.questionNumber', 'desc');
    $this->db->group_by('q.subject');
    $query = $this->db->get();
    $query->result();
    

    【讨论】:

      【解决方案2】:

      您可以使用以下代码编写查询:

      $query = $this->db->query("SELECT .....");
      
      $query->result();
      

      【讨论】:

      • 如何解决这个问题?
      • 使用基本 SQL 编写查询,可能是 codeigniter 在查询中出错的原因
      【解决方案3】:

      您可以为您的查询尝试此解决方案:

      $this->db->select('q.subject,COUNT(q.questionNumber), COUNT(qa.qaId)')->from('questions q');
      $this->db->join('questionAnswers qa', 'qa.questionId = q.questionId');
      $this->db->where('customerId', $customerId);
      $this->db->group_by('q.subject');
      $this->db->order_by('q.questionNumber', 'desc');
      $query = $this->db->get();
      $query->result();
      

      必须在查询中使用 Group By Clause 和其他具有聚合功能的字段的选择行中添加列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        • 2019-05-04
        • 1970-01-01
        • 2012-10-09
        • 2020-05-03
        • 2013-06-05
        • 2010-09-27
        相关资源
        最近更新 更多