2012-03-31 7 views
-3

下記のSQLクエリを説明してください。私はSQLを使って新しく、に参加しています。に参加してください。 ありがとうございます。ステートメントの結合

select a.ename as attendee 
,  t.ename as trainer 
from employees  t 
     join 
     offerings  o on (o.trainer = t.empno) 
     join 
     registrations r using (course, begindate) 
     join 
     employees  a on (r.attendee = a.empno) 
where course = 'SQL'; 

答えて

0

http://www.youtube.com/results?search_query=mysql+join&oq=mysql+join

やチュートリアルを読むには、このクエリは、すべての「SQL」コースに参加者全員の名前とそのトレーナーの名前を取得します。 従業員、オファリング、および登録の少なくとも3つのテーブルを持つデータベースがあります。 従業員はコース提供に登録でき、コース提供者のトレーナーも従業員です。オファリングに登録するには、コース名とそのコースの開始日を入力する必要があります。

employees t join offerings o on (o.trainer = t.empno) 

ここで、従業員はトレーナーのnrと従業員番号を使用したコース提供に関連しています。ここではトレーナーである従業員のみに興味があることを明確にするために、エイリアス名 "t"がEmployeeテーブルに使用されています。 "o"はOfferingsテーブルのエイリアス名です。この参加は、トレーナーが知られており、従業員であるすべてのコースを私たちに与えます。

join registrations r using (course, begindate) 

ここでの登録は、コース名とコース提供の要請を使用したコース提供に関連しています。前の行は次のようになります。

join registrations r on o.course = r.course AND o.begindate = r.begindate 


join employees a on (r.attendee = a.empno) 

ここで、従業員は出席者番号と従業員番号を使用した登録に関連しています。ここでは、コースの出席者である従業員のみに興味があることを明確にするために、エイリアス名 "a"がEmployeeテーブルに使用されています。今まで

where course = 'SQL'; 

我々は、エーテル:彼らは訓練されたコース、登録及びその出席者-empleyeesを持つすべてのトレーナー、従業員の長いリストを持っています。その長いリストの中でコース名が "SQL"に等しい行だけに興味があります。

+0

説明の種類私が探していたのですか?ありがとう。 – Abhinav

2

参加非常にうまくここで説明されています

http://www.postgresql.org/docs/current/static/tutorial-join.html

+0

3つの異なるテーブルを接続できる上記のクエリでJoinステートメントがどのように使用されているか、私は説明を期待していました。 – Abhinav

+0

@Abhinav:チュートリアルを読みましたか?それは結合がどのように働くかを説明し、そのために上記の説明を説明します。 –

関連する問題