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.
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.