Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 23

11 Geavanceerde SQL - joins

VLEKHO-HONIM
Probleem

• tabel EMPLOYEES: 20 lijnen (20


werknemers)
• Als we alle werknemers vragen met de
beschrijving van hun departement:19 lijnen

SELECT EMPLOYEE_ID, FIRST_NAME,


LAST_NAME, DEPARTMENT_ID

FROM EMPLOYEES

VLEKHO-HONIM
EMPLOYEE_ID FIRST_NAME LAST_NAME DEPARTMENT_ID
100 Steven King 90
101 Neena Kochhar 90
102 Lex De Haan 90
200 Jennifer Whalen 10
205 Shelley Higgins 110
206 William Gietz 110
149 Eleni Zlotkey 80
174 Ellen Abel 80
176 Jonathon Taylor 80
178 Kimberely Grant
124 Kevin Mourgos 50

VLEKHO-HONIM
EMPLOYEE_ID FIRST_NAME LAST_NAME DEPARTMENT_ID
141 Trenna Rajs 50
142 Curtis Davies 50
143 Randall Matos 50
144 Peter Vargas 50
103 Alexander Hunold 60
104 Bruce Ernst 60
107 Diana Lorentz 60
201 Michael Hartstein 20
202 Pat Fay 20

VLEKHO-HONIM
SELECT EMPLOYEE_ID, FIRST_NAME,
LAST_NAME, E.DEPARTMENT_ID,
DEPARTMENT_NAME

FROM EMPLOYEES E INNER JOIN


DEPARTMENTS D
ON E.DEPARTMENT_ID =
D.DEPARTMENT_ID

VLEKHO-HONIM
EMPLOYEE_ID FIRST_NAME LAST_NAME DEPARTMENT_ID DEPARTMENT_NAME
200 Jennifer Whalen 10 Administration
201 Michael Hartstein 20 Marketing
202 Pat Fay 20 Marketing
124 Kevin Mourgos 50 Shipping
141 Trenna Rajs 50 Shipping
142 Curtis Davies 50 Shipping
143 Randall Matos 50 Shipping
144 Peter Vargas 50 Shipping
103 Alexander Hunold 60 IT
104 Bruce Ernst 60 IT
107 Diana Lorentz 60 IT
149 Eleni Zlotkey 80 Sales
174 Ellen Abel 80 Sales
176 Jonathon Taylor 80 Sales
100 Steven King 90 Executive
101 Neena Kochhar 90 Executive
102 Lex De Haan 90 Executive
205 Shelley Higgins 110 Accounting

VLEKHO-HONIM
206 William Gietz 110 Accounting
Kimberely Grant is eruit gevallen

Waarom?

VLEKHO-HONIM
Oplossing

SELECT EMPLOYEE_ID, FIRST_NAME,


LAST_NAME, E.DEPARTMENT_ID,
DEPARTMENT_NAME

FROM EMPLOYEES E LEFT OUTER


JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID =
D.DEPARTMENT_ID

VLEKHO-HONIM
EMPLOYEE_ID FIRST_NAME LAST_NAME DEPARTMENT_ID DEPARTMENT_NAME
200 Jennifer Whalen 10 Administration
202 Pat Fay 20 Marketing
201 Michael Hartstein 20 Marketing
144 Peter Vargas 50 Shipping
143 Randall Matos 50 Shipping
142 Curtis Davies 50 Shipping
141 Trenna Rajs 50 Shipping
124 Kevin Mourgos 50 Shipping
107 Diana Lorentz 60 IT
104 Bruce Ernst 60 IT
103 Alexander Hunold 60 IT
176 Jonathon Taylor 80 Sales
174 Ellen Abel 80 Sales
149 Eleni Zlotkey 80 Sales
102 Lex De Haan 90 Executive
101 Neena Kochhar 90 Executive
100 Steven King 90 Executive
206 William Gietz 110 Accounting
205 Shelley Higgins 110 Accounting

VLEKHO-HONIM
178 Kimberely Grant
• De waarden van department_id en
department_name voor Kimberely Grant zijn
null. Met behulp van de functie coalesce
kan toch een waarde gegeven worden:

VLEKHO-HONIM
SELECT EMPLOYEE_ID, FIRST_NAME,
LAST_NAME,
COALESCE(TO_CHAR(E.DEPARTMENT_ID)
,'niet gekend') AS DEPARTMENT_ID,
COALESCE(DEPARTMENT_NAME,'niet
gekend') AS DEPARTMENT_ID

FROM EMPLOYEES E LEFT OUTER JOIN


DEPARTMENTS D
ON E.DEPARTMENT_ID =
D.DEPARTMENT_ID

VLEKHO-HONIM
EMPLOYEE_ID FIRST_NAME LAST_NAME DEPARTMENT_ID DEPARTMENT_NAME
200 Jennifer Whalen 10 Administration
202 Pat Fay 20 Marketing
201 Michael Hartstein 20 Marketing
144 Peter Vargas 50 Shipping
143 Randall Matos 50 Shipping
142 Curtis Davies 50 Shipping
141 Trenna Rajs 50 Shipping
124 Kevin Mourgos 50 Shipping
107 Diana Lorentz 60 IT
104 Bruce Ernst 60 IT
103 Alexander Hunold 60 IT
176 Jonathon Taylor 80 Sales
174 Ellen Abel 80 Sales
149 Eleni Zlotkey 80 Sales
102 Lex De Haan 90 Executive
101 Neena Kochhar 90 Executive
100 Steven King 90 Executive
206 William Gietz 110 Accounting
205 Shelley Higgins 110 Accounting

VLEKHO-HONIM
178 Kimberely Grant niet gekend niet gekend
Vraag: geef alle departementen met hun
werknemers

alle departementen:

SELECT *
FROM DEPARTMENTS

VLEKHO-HONIM
LOCATION_I
DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID D
10 Administration 200 1700
20 Marketing 201 1800
50 Shipping 124 1500
60 IT 103 1400
80 Sales 149 2500
90 Executive 100 1700
110 Accounting 205 1700
190 Contracting 1700

VLEKHO-HONIM
SELECT D.DEPARTMENT_ID,
DEPARTMENT_NAME,
LAST_NAME, FIRST_NAME
FROM DEPARTMENTS D INNER JOIN
EMPLOYEES E
ON D.DEPARTMENT_ID =
E.DEPARTMENT_ID

VLEKHO-HONIM
DEPARTMENT_ID DEPARTMENT_NAME LAST_NAME FIRST_NAME
10 Administration Whalen Jennifer
20 Marketing Fay Pat
20 Marketing Hartstein Michael
50 Shipping Davies Curtis
50 Shipping Matos Randall
50 Shipping Mourgos Kevin
50 Shipping Rajs Trenna
50 Shipping Vargas Peter
60 IT Ernst Bruce
60 IT Hunold Alexander
60 IT Lorentz Diana
80 Sales Abel Ellen
80 Sales Taylor Jonathon
80 Sales Zlotkey Eleni
90 Executive De Haan Lex
90 Executive King Steven
90 Executive Kochhar Neena
110 Accounting Gietz William
110 Accounting Higgins Shelley

VLEKHO-HONIM
Er is een werknemer (Kimberely Grant) te
weinig en een departement (190)

VLEKHO-HONIM
Oplossing

SELECT D.DEPARTMENT_ID,
DEPARTMENT_NAME, LAST_NAME,
FIRST_NAME

FROM DEPARTMENTS D FULL OUTER


JOIN EMPLOYEES E

ON D.DEPARTMENT_ID =
E.DEPARTMENT_ID

VLEKHO-HONIM
DEPARTMENT_ID DEPARTMENT_NAME LAST_NAME FIRST_NAME
10 Administration Whalen Jennifer
20 Marketing Hartstein Michael
20 Marketing Fay Pat
50 Shipping Davies Curtis
50 Shipping Vargas Peter
50 Shipping Rajs Trenna
50 Shipping Mourgos Kevin
50 Shipping Matos Randall
60 IT Hunold Alexander
60 IT Ernst Bruce
60 IT Lorentz Diana

VLEKHO-HONIM
DEPARTMENT_ID DEPARTMENT_NAME LAST_NAME FIRST_NAME
80 Sales Taylor Jonathon
80 Sales Zlotkey Eleni
80 Sales Abel Ellen
90 Executive De Haan Lex
90 Executive King Steven
90 Executive Kochhar Neena
110 Accounting Higgins Shelley
110 Accounting Gietz William
190 Contracting
Grant Kimberely

VLEKHO-HONIM
Om null-waarden in het resultaat te vermijden:

SELECT COALESCE(TO_CHAR(D.DEPARTMENT_ID),'niet
gekend') AS DEPARTMENT_ID,

COALESCE(DEPARTMENT_NAME,'niet gekend') AS
DEPARTMENT_NAME,
COALESCE( LAST_NAME,'niet gekend') AS
LAST_NAME,
COALESCE(FIRST_NAME,'niet gekend') AS
FIRST_NAME

FROM DEPARTMENTS D FULL OUTER JOIN EMPLOYEES E


ON D.DEPARTMENT_ID = E.DEPARTMENT_ID

VLEKHO-HONIM
DEPARTMENT_ID DEPARTMENT_NAME LAST_NAME FIRST_NAME
10 Administration Whalen Jennifer
20 Marketing Hartstein Michael
20 Marketing Fay Pat
50 Shipping Davies Curtis
50 Shipping Vargas Peter
50 Shipping Rajs Trenna
50 Shipping Mourgos Kevin
50 Shipping Matos Randall
60 IT Hunold Alexander
60 IT Ernst Bruce
60 IT Lorentz Diana

VLEKHO-HONIM
DEPARTMENT_ID DEPARTMENT_NAME LAST_NAME FIRST_NAME
80 Sales Taylor Jonathon
80 Sales Zlotkey Eleni
80 Sales Abel Ellen
90 Executive De Haan Lex
90 Executive King Steven
90 Executive Kochhar Neena
110 Accounting Higgins Shelley
110 Accounting Gietz William
190 Contracting niet gekend niet gekend
niet gekend niet gekend Grant Kimberely

VLEKHO-HONIM

You might also like