我知道标题听起来像是一个常见的问题,但我在这里看了一下,似乎找不到问题(答案)和我的一样。
所以这就是我的情况:我有三个表(major_criteria,问题和结果)......有多个主要标准,一个主要标准有多个问题。表格结果包含所有用户对这些问题的答案。使用此代码:
$this->db->simple_query('set session group_concat_max_len=1000000');
$this->db->select('*, GROUP_CONCAT(CONCAT("<tr><td>", eq_question, "</td><td id=fix>", r_value) SEPARATOR "</td></tr>") as quesrate', false);
$this->db->from('evaluation_result');
$this->db->join('evaluation_question', 'evaluation_question.eq_ai=evaluation_result.er_eq_ai', left);
$this->db->join('evaluation_major_criteria', 'evaluation_major_criteria.emc_ai=evaluation_question.eq_emc_ai', left);
$this->db->join('rating', 'rating.r_ai=evaluation_result.er_rate', left);
$this->db->where('er_il_ai', $inst);
$this->db->where('er_ay_ai', $aca);
$this->db->where('er_sem_ai', $sem);
$this->db->where('er_et_ai', $evaltype);
$this->db->order_by('emc_code', 'asc');
$this->db->group_by('emc_code', 'asc');
$query=$this->db->get();
假设我有三个用户回答,我能够做到这一点:
一个。主要标准1
问题1 |答案1
问题1 |答案2
问题1 |答案3
问题2 |答案1
问题2 |答案2
问题2 |答案3
B中。主要标准2
问题1 |答案1
问题1 |答案2
问题1 |答案3
问题2 |答案1
问题2 |答案2
问题2 |答案3
...
我成功地按主要标准对它们进行了分组。但它接近我想要实现的目标。我想要的是按问题对它进行分组,因此不会重复用户已回答的数量。
这样的事情:
一个。主要标准1
问题1 |答案1,答案2,答案3
问题2 |答案1,答案2,答案3
B中。主要标准2
问题1 |答案1,答案2,答案3
问题2 |答案1,答案2,答案3
...
我已经尝试过使用两个group_by,并且它不像我想要的那样工作,根据这个:Using group by on multiple columns
我已尝试将DISTINCT放入GROUP_CONCAT,但它在正确分组的主要标准下给出了非常奇怪的问题组合(有些仍然重复)。
我尝试过使用一个或两个group_by的嵌套select语句。
IDK。也许我正在寻找错误的方向?
我的资源已耗尽。我环顾四周,尝试了一切,但仍然没有运气。这是我的最后一招。我正在使用codeigniter,顺便说一句。
编辑:
我第一次创建页面时也有这段代码:
$this->db->select('*', false);
$this->db->from('evaluation_result');
$this->db->join('evaluation_question', 'evaluation_question.eq_ai=evaluation_result.er_eq_ai', left);
$this->db->join('evaluation_major_criteria', 'evaluation_major_criteria.emc_ai=evaluation_question.eq_emc_ai', left);
$this->db->join('rating', 'rating.r_ai=evaluation_result.er_rate', left);
$this->db->where('er_il_ai', $inst);
$this->db->where('er_ay_ai', $aca);
$this->db->where('er_sem_ai', $sem);
$this->db->where('er_et_ai', $evaltype);
$this->db->where('eq_s_ai', 2);
$this->db->order_by('emc_code', 'asc');
$this->db->group_by('eq_ai');
$query=$this->db->get();
它有问题地分组。现在我有两个查询,一个按主要标准分组,另一个按问题分组。我想我只需要将它们结合起来?但是idk怎么样。