1

関係代数でこれを解決するのを手伝ってくれませんか。私はこのDB(論文防衛)を持っています。

  • Teachers(Teacher_ID、Name、Specialty)
  • プロジェクト(Project_ID、タイトル、専門分野)
  • 論文(Thesis_ID、Project_ID、Jury_ID、Decision)
  • 審査員(審査員ID、スーパーバイザーID、First_Member_ID、Second_Member_ID)

専門分野の論文を監督する教師(ID、名前)を取得するための代数クエリを見つけたいと思います。

私はすでにSQLでそれを行いました、これはそれがどのように見えるべきかです:

Select Teacher_ID, Name  
From Teachers T  
Where Teacher_ID IN
      (Select Supervisor_ID  
       From Juries  
       Where Jury_ID IN
             (Select Jury_ID  
              From Thesis  
              Where Project_ID IN 
                    (Select Project_ID  
                     From Projects P  
                     Where T.Specialty = P.Specialty)))  

ご協力いただきありがとうございます!

4

2 に答える 2

2

これをやろうとしていますか?

select Te.Teacher_ID,Te.Name from thesis t
join project P on (T.Speciality =P.Speciality)
join Juries J on ( J.jury_ID = T.Jury_id)
join Teacher Te on (Te.Teacher_ID = J.Supervisor_ID)
于 2011-01-29T09:57:01.747 に答える
1

Mulki の助けのおかげで、私の質問に対する答えを見つけたと思います。

R1 <- Thesis ⋈ (Project_ID) Projects
R2 <- Teachers ⋈ (Teacher_ID=Supervisor_ID) Juries
R3 <- π Teacher_ID, Name (R2 ⋈ (Specialty ^ Jury_ID) R1)

したがって、最初に R1 で論文の専門分野を取得します (ここで Mulki の回答が役立ちます)
。次に R2 でスーパーバイザーである教師を取得します。
最後に、同じ Jury_ID と専門分野を持っているという条件で R2 と R1 に参加し
、 IDと名前のみ

于 2011-01-30T13:20:58.383 に答える