2013-09-03 6 views
0

Я пробовал многого, чтобы добиться этого, чтобы не добиться успеха, поэтому им здесь за помощью. Я постараюсь дать полную информацию, поэтому я могу помочь себе получить лучшее необходимое решение.Как создать сводную таблицу из MySQL

из моей базы данных MySQL

Table (students) 
-------------------------------- 
studentID | class_id | and other info 


Table (class) 
------------------------------- 
classID | name | other info 


Table (subjects) 
-------------------------------- 
subjectID | name | class_id (references Class.classID) 


Table (exam_type) 
-------------------------------- 
exam_typeID | name | desc | start_date 


Table (result) 
--------------------------------------------- 
student_id | exam_type_id | subject_id | mark 

В моем запросе у меня есть это:

SELECT subjects.name, exam_type.name, result.mark FROM subjects 
LEFT JOIN result ON result.subject_id=subjects.subjectID 
JOIN exam_type ON exam_type.exam_typeID=result.exam_type_id 
WHERE result.student_id=$x 
ORDER BY 
subjects.name, exam_type.name 

В запросе $ х является идентификатором студента, чтобы показать его/ее результат

запрос возвращает это

results shown, from dummy data in my database

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

front end

его будет очень полезно, если кто-то мне точку в правильном направлении, чтобы diplace информацию в первой картине как таковой.

---------------------------------------------- 
          CA Tests | Exams 
----------------------------------------------- 
subjects    | 1 | 2 | 3 | score 
----------------------------------------------- 
Agricultural science | 10 | 9 | 8 | 56 
----------------------------------------------- 
English language  | 12 | 13 | 12 | 43 
----------------------------------------------- 
French Language  | 11 |  | | 

РЕШИТЬ: раствором JIML в solved

ответ

0

Изменение SQL, так что вы не получите две колонки с тем же именем

SELECT subjects.name, exam_type.name, result.mark FROM subjects 
--> 
SELECT subjects.name, exam_type.name as test, result.mark FROM subjects 

Затем вы можете сделать что-то вроде этого (I 'имитировал результат из db)

$result = array(
    0 => array(
    'name' => 'Agricultural Science', 
    'test' => 'CA 1', 
    'mark' => 10 
), 
    1 => array(
    'name' => 'Agricultural Science', 
    'test' => 'CA 2', 
    'mark' => 9 
), 
    2 => array(
    'name' => 'Agricultural Science', 
    'test' => 'CA 3', 
    'mark' => 8 
), 
    3 => array(
    'name' => 'Agricultural Science', 
    'test' => 'Exam', 
    'mark' => 56 
), 
    4 => array(
    'name' => 'English Language', 
    'test' => 'CA 1', 
    'mark' => 12 
), 
    5 => array(
    'name' => 'English Language', 
    'test' => 'CA 2', 
    'mark' => 13 
), 
    6 => array(
    'name' => 'English Language', 
    'test' => 'CA 3', 
    'mark' => 12 
), 
    7 => array(
    'name' => 'English Language', 
    'test' => 'Exam', 
    'mark' => 43 
) 
); 

$data = array(); 
foreach ($result as $row) { 
    $data[$row['name']]['marks'][$row['test']] = $row['mark']; 
} 

?> 
CA test | Exams<br /> 
<?php 
foreach ($data as $name => $row) { 
    echo $name . ' | ' . $row['marks']['CA 1'] . ' | ' . $row['marks']['CA 2'] . ' | ' . $row['marks']['CA 3'] . ' | ' . $row['marks']['Exam'] . '<br />'; 
} 

Выход

CA test | Exams 
Agricultural Science | 10 | 9 | 8 | 56 
English Language | 12 | 13 | 12 | 43 

Тогда просто добавьте его, однако можно создавать таблицы.

+0

Позвольте мне попробовать и посмотреть, я чувствую себя хорошо, думаю, что это сработает – user2666633

+0

@ user2666633: удачи, надеюсь, что это сработает для вас :) – JimL

Смежные вопросы