加入声明

时间:2012-03-31 19:09:28

标签: sql join self-join

请解释下面给出的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';

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

只需在youtube.com上观看sql教程。

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

或阅读w3schools.com上的教程 http://www.w3schools.com/sql/sql_join_inner.asp

答案 2 :(得分:0)

此查询获取所有“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)

此处员工与使用参加者nr和员工编号的注册相关。为了说清楚这里我们只对那些参加课程的员工感兴趣,别名“a”用于Employee表。

where  course = 'SQL';

到目前为止,我们有一长串的所有培训师 - 员工都有他们培训的ethe课程,注册和他们的参与者 - empleyees。在那个长列表中,我们只对那些课程名称等于“SQL”的行感兴趣。