2012-03-31 5 views
-3

Bitte erläutern Sie die unten angegebene SQL-Abfrage. Ich bin neu mit SQL und kämpfen mit Join Statements. Vielen Dank im Voraus.Join-Anweisungen

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'; 

Antwort

0

Diese Abfrage wird die Namen aller Teilnehmer und der Name ihrer Trainer für alle 'SQL' Kurse. Sie haben eine Datenbank mit mindestens 3 Tabellen: Mitarbeiter, Angebote und Registrierungen. Ein Mitarbeiter kann sich für ein Kursangebot anmelden und der Trainer eines Kursangebots ist ebenfalls ein Mitarbeiter. Um sich für ein Angebot zu registrieren, müssen Sie den Kursnamen und das Anfangsdatum des Kurses angeben.

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

Hier beziehen sich die Mitarbeiter auf Kursangebote unter Verwendung der Trainernummer und der Angestelltennummer. Um zu verdeutlichen, dass wir hier nur an den Mitarbeitern interessiert sind, die Trainer sind, wurde für die Employee-Tabelle der Aliasname "t" verwendet. "o" ist der Aliasname für die Tabelle "Angebote". Dieser Beitritt gibt uns alle Kurse, für die der Trainer bekannt ist und ein Angestellter ist.

Hier beziehen sich die Anmeldungen auf die Kursangebote unter Verwendung des Kursnamens und des Anfangs des Kursangebots. Die vorhergehende Zeile ist gleich:

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


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

Hier Mitarbeiter Registrierungen mit dem Teilnehmer nr und die Mitarbeiternummer verknüpft sind. Um zu verdeutlichen, dass wir hier nur an den Mitarbeitern interessiert sind, die an einem Kurs teilnehmen, wurde für die Employee-Tabelle der Aliasname "a" verwendet.

where course = 'SQL'; 

Bis jetzt haben wir eine lange Liste aller Trainer-Mitarbeiter mit ETHE Kurse sie ausgebildet, die Registrierungen und deren Teilnehmer-empleyees. Von dieser langen Liste sind wir nur an den Zeilen interessiert, bei denen der Kursname gleich "SQL" ist.

+0

Art der Erklärung, die ich gesucht habe. Vielen Dank. – Abhinav

2
+0

Ich erwartete eine Erklärung, wie Join-Anweisungen in der obigen Abfrage in der Lage sind, drei verschiedene Tabellen zu verbinden. – Abhinav

+0

@Abhinav: Hast du das Tutorial gelesen? Es erklärt, wie Joins funktionieren und erklärt daher die obige Aussage. –