2013-09-03 2 views
0

나는 이것을 성공을 위해 많이 시도 했으므로 여기에 도움이 필요하다. 나는 최선의 해결책을 얻는 것을 스스로 도울 수 있도록 상세한 정보를 제공하려고 노력할 것이다. 내 쿼리에서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 

내 MySQL 데이터베이스에서

나는이있다 : 쿼리 $ X에있는
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 

는 그/그녀의 결과를 보여주기 위해 학생의 ID입니다

쿼리에서이를 반환합니다.

꽤 많이 좋아요. 이제는 두통이 좋아요. 그런 식으로 결과를 옮기고 싶습니다. 내 디자인을 이미 보아주세요. 누군가가 같은 첫 번째 사진에서 정보를 diplace 오른쪽 방향으로 날 지점 경우

front end

는 정말 도움이 될 것이다.

---------------------------------------------- 
          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

내가 그것을 시도하고 보자, 내가 잘할 수 coz이 작동합니다 생각합니다 – user2666633

+0

@ user2666633 : 행운을 빕니다, 당신을 위해 일하길 바란다 :) – JimL

관련 문제