MySQL GROUP BY для нескольких столбцов, codeigniter [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 MySQL GROUP BY для нескольких столбцов, codeigniter [дубликат]

Сообщение Anonymous »

Я знаю, что заголовок звучит как обычный вопрос, но я осмотрелся здесь и не нашел таких же проблем (с ответами), как у меня.

Итак, это мой случай: у меня есть три таблицы (major_criteria, вопросы и результаты)... Существует несколько основных критериев, и один основной критерий содержит несколько вопросов. В таблице результатов содержатся все ответы пользователей на эти вопросы. Используя этот код:

Код: Выделить всё

$this->db->simple_query('set session group_concat_max_len=1000000');
$this->db->select('*, GROUP_CONCAT(CONCAT("", eq_question, "", r_value) SEPARATOR "") 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

Б. Основные критерии 2

Вопрос 1 | Ответ 1

Вопрос 1 | Ответ 2

Вопрос 1 | Ответ 3

Вопрос 2 | Ответ 1

Вопрос 2 | Ответ 2

Вопрос 2 | Ответ 3

...

Мне удалось сгруппировать их по основным критериям. Но это близко к тому, чего я хочу достичь. Я хочу также сгруппировать его по вопросам, чтобы он не повторялся по количеству ответов пользователей.

Примерно так:

A. Основные критерии 1

Вопрос 1 | Ответ 1, Ответ 2, Ответ 3

Вопрос 2 | Ответ 1, Ответ 2, Ответ 3

Б. Основные критерии 2

Вопрос 1 | Ответ 1, Ответ 2, Ответ 3

Вопрос 2 | Ответ 1, Ответ 2, Ответ 3

...

Я пробовал использовать два group_by, и это не работает так, как я хочу, в соответствии с этим: Использование group by для нескольких столбцов

Я пытался поместить DISTINCT в GROUP_CONCAT, но это дает мне действительно странную комбинацию вопросов (некоторые все еще повторяются) при правильно сгруппированных основных критериях.

Я пробовал вложенные операторы выбора с одним или двумя group_by.

Не знаю. Может быть, я смотрю не в том направлении?

У меня закончились ресурсы. Я осмотрелся и перепробовал все, что нашел, но все равно безуспешно. Это мое последнее средство. Кстати, я использую для этого 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();
И группируется по вопросам. Теперь у меня есть два запроса: один группируется по основным критериям, а другой — по вопросам. Я думаю, мне просто нужно их объединить? Но я не знаю как.

Подробнее здесь: https://stackoverflow.com/questions/353 ... odeigniter
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»