Joins - Anwendung

123michi19

Neuer Benutzer
Beiträge
1
Hallo zusammen :)

ich bin gerade am Verzweifeln was Joins in SQL betrifft.
- Mir ist bewusst, dass es Left Joins, Right Joins etc. gibt und dass sich diese auf die jeweilige Tabellenhälfte beziehen.

Aber ein paar Fragen stelle ich mir noch:

Was bringt mir using und on?

Hier mal eine Beispielaufgabe mit Lösung:

Die Personalabteilung benötigt einen Bericht der Mitarbeiter in Toronto. Zeigen Sie den Nachnamen, die Job-Kennung, die Abteilungsnummer und den Abteilungsnamen für alle Mitarbeiter an, die in Toronto arbeiten.

Die Lösung:

select e.last_name, e.job_id, e.department_id, d.department_name
from employees e, departments d, locations l
where e.department_id = d.department_id
and d.location_id = l.location_id
and lower(l.city) = 'toronto';

Hier noch die Inhalte der Tabellen von Employees und Departments:

Name Null Typ
-------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
Name Null Typ
--------------- -------- ------------
DEPARTMENT_ID NOT NULL NUMBER(4)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
MANAGER_ID NUMBER(6)
LOCATION_ID NUMBER(4)


Mir leuchtet die Lösung nicht ein, ich sehe keinen Left Join etc. und warum haben last_name, job_id und department_id den Bezeichner von employees und department_name den Bezeichner von departments?


Vielen Dank für Eure Hilfe.
 
Werbung:
Das ist der gute, alte Kommajoin (umgangssprachlich).
Statt dem = kann man auch join.. on schreiben.
Deine andere Frage versteh ich nicht ganz, das sind die Spalte aus den jeweiligen Tabellen. Die Verbindung der beiden Tabellen wird über den Join hergestellt.
 
Ack @drdimitri , ergänzend dazu noch, daß die expliziete Join-Syntax besser ist, da sie die Join-Condition von der Where-Condition trennt. Die andere Frage ist offenbar auf das e.<Spalte> und d.<Spalte> bezogen. In der From-List werden den beteiligten Tabellen Aliase vergeben, eben z.B. e und d. Im 'Rest' der Abfrage bezieht man sich dann auf diese Aliase.
 
Werbung:
Ack @drdimitri , ergänzend dazu noch, daß die expliziete Join-Syntax besser ist, da sie die Join-Condition von der Where-Condition trennt.
Ist vermutlich Gewohnheitssache. In den älteren Oracleversionen (vor 9i) gab's die ANSI Join Syntax noch gar nicht. Ich find den Kommajoin übersichtlicher (mit Ausnahme des Full Outer Joins). Vom Ausführungsplan her ist es egal ob alte oder neue Syntax.
 
Zurück
Oben