Как обрабатывать данные SQL-запросов в Php Codeigniter

ПРИМЕЧАНИЕ: это конкретная проблема, для этого нужно ответить.

Это моя таблица базы данных, откуда я хочу получить данные.
Таблица базы данных

мой запрос к БД

select std.reg_id, std.name as student_name, r.marks as obtain_marks, q.ques_marks as total_marks,  cat.name as category_name, q.cat_id, course.name as course_name
FROM tbl_result as r JOIN tbl_question as q on q.id = r.ques_id
JOIN tbl_category as cat on cat.id = q.cat_id
JOIN tbl_batch_assigned_courses as assign on assign.id = r.course_offered_id
JOIN tbl_courses as course on course.id = assign.course_id
JOIN tbl_student as std on std.id = r.student_id
WHERE r.student_id = 168 AND r.course_offered_id = 46

Ты видишь? Есть много категорий, и каждая категория имеет Получить и итоговые оценки.

Теперь я хочу получить данные из этой таблицы (уже сделал) и отобразить его на виде (уже сделал).

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

Например:

Коммуникационные навыки имеют в общей сложности 15 баллов.
и это всего 25 баллов.

(общее количество полученных / общее количество вопросительных знаков) * 100 ~ = [некоторое значение] для категории 1.

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

Php должен делать это автоматически, просто передавая учащегося и идентификатор курса.

Код моего контроллера:

public function show_single_student_report(){
$go = $this->input->post("submit_go");
if(isset($go)) {
$program_id = $this->input->post('program_id');
$batch_id = $this->input->post('batch_id');
$course_id = $this->input->post('course_id');
$student_id = $this->input->post('student_id');

$data['results'] = $this->csv_model->get_single_student_result($student_id, $course_id);

$this->load->view('show_single_student_report', $data);
}
else{
redirect("main/check_result");
}


}

код вида:

$this->load->view('show_single_student_report', $data);

этот

<?php foreach ($results as $std):  ?>
<div class="row">

<?php $obtain += $std->obtain_marks; ?>
Name : <?= $std->student_name;?> <br>
obtain marks: <?= $std->obtain_marks; ?> <br>
total_marks: <?= $std->total_marks;?> <br>
category: <?= $std->category_name; ?><br>
course: <?= $std->course_name; ?><br>
category_id: <?= $std->cat_id;?> <br>
</div>
<div style="height: 50px;"></div>

<?php endforeach;?>

По сути, я не знаю, как повторить MYSQL Query через PHP.

0

Решение

Вы хотите изменить свой запрос, чтобы агрегировать оценки по категориям.

Попробуйте запустить:

SELECT
q.cat_id,
SUM(r.marks) AS obtain_marks,
SUM(q.ques_marks) AS total_marks,
FROM tbl_result as r
JOIN tbl_question as q on q.id = r.ques_id
GROUP BY q.cat_id

Это должно дать вам представление о том, как SUM () и GROUP BY работают вместе.
Затем просто объедините его с другими данными:

SELECT
std.reg_id,
std.name as student_name
FROM tbl_student as std
JOIN
(
SELECT
q.cat_id,
r.student_id,
SUM(r.marks) AS obtain_marks,
SUM(q.ques_marks) AS total_marks,
FROM tbl_result as r
JOIN tbl_question as q on q.id = r.ques_id
WHERE r.student_id = std.id
GROUP BY q.cat_id
) tbl1
ON tbl1.student_id = std.id
0

Другие решения

Других решений пока нет …