12 のテーブルからレコードを選択する方法を教えていただければ幸いです。
主な問題は、学生が取得した点数を保存するための各科目のテーブルがあることです。
各科目テーブルには、次の列があります: StudentId、RegId、AcademicYear、Term、Form、ClassScore、ExamScore、Total、Grade。
studentDetails.Students
学生の人口統計レコードを含むテーブルには、StudentId
主キーとして列があります。
12 のテーブルからレコードを選択する方法を教えていただければ幸いです。
主な問題は、学生が取得した点数を保存するための各科目のテーブルがあることです。
各科目テーブルには、次の列があります: StudentId、RegId、AcademicYear、Term、Form、ClassScore、ExamScore、Total、Grade。
studentDetails.Students
学生の人口統計レコードを含むテーブルには、StudentId
主キーとして列があります。
ユニオン クエリを使用した例:
SELECT au_lname FROM authors
UNION ALL
SELECT lname FROM Employee
ORDER BY au_lname
データを返す方法はいくつかあります。
テーブルとすべてのテーブルのJOIN
間にa を使用できます。students
subjects
select * -- replace this with the columns you want to return
from Students s
left join subject1 s1
on s.studentid = s1.studentid
left join subject2 s2
on s.studentid = s2.studentid
left join subject3 s3
on s.studentid = s3.studentid
left join subject4 s4
on s.studentid = s4.studentid;
デモで SQL Fiddle を参照してください
または、各テーブル間students
を使用するサブクエリでテーブルを結合する次のようなものを使用できます。UNION ALL
subject
select s.StudentId, S.StudentName, S.Photo,
sb.StudentId, sb.RegId, sb.AcademicYear,
sb.Term, sb.Form, sb.ClassScore, sb.ExamScore, sb.Total, sb.Grade
from students s
inner join
(
select s1.StudentId, s1.RegId, s1.AcademicYear,
s1.Term, s1.Form, s1.ClassScore, s1.ExamScore, s1.Total, s1.Grade,
'Subject1' as src
from subject1 s1
union all
select s2.StudentId, s2.RegId, s2.AcademicYear,
s2.Term, s2.Form, s2.ClassScore, s2.ExamScore, s2.Total, s2.Grade,
'Subject2' as src
from subject2 s2
union all
select s3.StudentId, s3.RegId, s3.AcademicYear,
s3.Term, s3.Form, s3.ClassScore, s3.ExamScore, s3.Total, s3.Grade,
'Subject3' as src
from subject3 s3
) sb
on s.studentid = sb.studentid
デモで SQL Fiddle を参照してください
結合したい別のテーブルがある場合は、次を使用します。
select s.StudentId, S.StudentName, S.Photo,
sb.StudentId, sb.RegId, sb.AcademicYear,
sb.Term, sb.Form, sb.ClassScore, sb.ExamScore, sb.Total, sb.Grade,
r.programofstudy
from students s
inner join
(
select s1.StudentId, s1.RegId, s1.AcademicYear,
s1.Term, s1.Form, s1.ClassScore, s1.ExamScore, s1.Total, s1.Grade,
'Subject1' as src
from subject1 s1
union all
select s2.StudentId, s2.RegId, s2.AcademicYear,
s2.Term, s2.Form, s2.ClassScore, s2.ExamScore, s2.Total, s2.Grade,
'Subject2' as src
from subject2 s2
union all
select s3.StudentId, s3.RegId, s3.AcademicYear,
s3.Term, s3.Form, s3.ClassScore, s3.ExamScore, s3.Total, s3.Grade,
'Subject3' as src
from subject3 s3
) sb
on s.studentid = sb.studentid
left join Registration r
on s.studentid = r.studentid
and sb.regid = r.regid