0

12 のテーブルからレコードを選択する方法を教えていただければ幸いです。

主な問題は、学生が取得した点数を保存するための各科目のテーブルがあることです。

各科目テーブルには、次の列があります: StudentId、RegId、AcademicYear、Term、Form、ClassScore、ExamScore、Total、Grade。

studentDetails.Students学生の人口統計レコードを含むテーブルには、StudentId 主キーとして列があります。

4

2 に答える 2

1

ユニオン クエリを使用した例:

SELECT au_lname FROM authors
UNION ALL
SELECT lname FROM Employee
ORDER BY au_lname
于 2013-02-25T17:20:39.117 に答える
1

データを返す方法はいくつかあります。

テーブルとすべてのテーブルのJOIN間にa を使用できます。studentssubjects

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 ALLsubject

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
于 2013-02-25T17:25:40.733 に答える