请解释下面给出的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 :(得分: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”的行感兴趣。