2012-03-31 78 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

這個查詢得到所有與會者的名字和他們的教練的名字都「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'; 

到現在爲止,我們擁有所有的教練,員工醚:課程他們訓練的註冊和他們的參加人員empleyees一長串。在那個長列表中,我們只對那些課程名稱等於「SQL」的行感興趣。

+0

我在找的一種解釋。謝謝。 – Abhinav 2012-04-03 04:39:35

2
+0

我期待解釋,在上面的查詢中如何使用Join語句能夠連接三個不同的表。 – Abhinav 2012-04-02 16:11:30

+0

@Abhinav:你看過教程嗎?它確實解釋了連接是如何工作的,因此它解釋了上述說明。 – 2012-04-02 16:13:58