wersja

Transkrypt

wersja
SELECT –
złączenia
1
Złaczenia ( JOINS )
„
„
Operacja złączenia bierze dwie relacje i zwraca jako wynik
trzecią.
Podaje się warunek złączenia, który określa jakie krotki w
tych dwóch relacjach sobie odpowiadają (zostaną
połączone krotki o takiej samej wartości atrybutów
występujących w warunku złączenia).
A
a1
1
2
3
B
a2
a
b
c
b1
2
3
4
4
b2
a
a
b
d
select *
from A, B
where a2 = b2
a1 a2 b1 b1
----------1 a 2 a
1 a 3 a
2 b 4 b
2
Złaczenia ( JOINS ) - przykład
TOWARY
N
1
PRODUCENCI
Towary (id_t, nazwa, cena, producent)
Producenci (id_prod, nazwa, adres)
Select Towary.nazwa, Towary.cena, Producenci.nazwa
From Towary, Producenci
Where Towary.producent = Producenci.id_prod
Powyższe zapytanie zwraca nazwę towaru, cenę towaru, oraz nazwę
producenta tego towaru. Dane zatem trzeba pobrać z dwóch tabel – Towary i producenci.
Warunek „where” służy tu do połączenia (po kluczu obcym) towaru z jego producentem.
3
Złaczenia ( JOINS )
„
Zamiast poprzedzać atrybut pełną nazwą tabeli,
można nadać tabelom aliasy (skrótowe nazwy),
których potem można użyć przed nazwą atrybutu,
aby zaznaczyć, z której tabeli dany atrybut
pochodzi.
nazwa_tabeli alias
Np.:
Select T.nazwa, T.cena, P.nazwa
From Towary T, Producenci P
Where T.producent = P.id_prod
4
Zadania
„
„
„
Dla każdego pracownika podaj jego identyfikator,
nazwisko i nazwę działu, w którym pracuje (należy
połączyć tabele Pracownicy i Dzialy)
Dla każdego pracownika podaj jego nazwisko,
stanowisko oraz prace minimalna i maksymalna na
jego stanowisku (połącz tabele: Pracownicy i
Stanowiska)
Podaj wszystkie informacje z poprzednich dwóch
zapytań, tzn: id, nazwisko, nazwa dzialu, stanowisko,
placa min i max (musisz połączyć wszystkie trzy
tabele)
5
Zadania c.d.
Podaj nazwiska pracowników, którzy
pracują w dziale na Piotrowie.
„ Podaj pracowników Administracji, którzy
zarabiają więcej niż 500
„ Podaj nazwiska pracowników, których
zarobki nie mieszczą się w „widełkach”
między płacą min a max dla jego
stanowiska
„
6
Zadania c.d.
Dla każdego pracownika podaj jego
nazwisko oraz nazwisko jego szefa
„ Podaj nazwiska pracowników, którzy
pracują w tym samym dziale co Koszlajda.
„ Podaj nazwiska pracowników, którzy
zarabiają więcej niż Królikowski.
„
7
Złaczenia ( JOINS )
„
Typ złączenia – określa w jaki sposób są traktowane te
krotki w każdej z relacji, które nie mają odpowiedników w
drugiej z relacji (uwzględniając warunek złączenia).
Typ złączenia
Warunki złączenia
inner join
left outer join
right outer join
full outer join
natural
on <predicate>
using (A1, A2, ..., An)
8
Złączenia – cd.
„
Złączenia wewnętrzne – INNER JOIN
‹ Do wyniku wpisujemy tylko krotki, które spełniają warunek
wiązania (krotki z lewej i z prawej muszą sobie „odpowiadać”)
‹ W dotychczasowych zadaniach i przykładach używaliśmy
odpowiednika „inner join”
A
a1
1
2
3
B
a2
a
b
c
b1
2
3
4
4
b2
a
a
b
d
select *
from A inner join B
on a2, b2
a1 a2 b1 b1
----------1 a 2 a
1 a 3 a
2 b 4 b
9
Złączenia – cd.
„
Lewe złączenie zewnętrzne – LEFT OUTER JOIN
‹ Każdą krotki z lewej tabeli uzupełniamy wszystkimi krotkami z
tabeli prawej odpowiadającymi warunkowi złączenia. Jeżeli takiej
krotki nie ma, to krotka z lewej tabeli jest uzupełniana wartościami
NULL.
A
a1
1
2
3
B
a2
a
b
c
b1
2
3
4
4
b2
a
a
b
d
select *
from A left outer join B
on a2, b2
a1 a2 b1
b1
------------1 a 2
a
1 a 3
a
2 b 4
b
3 c null null
10
Złączenia – cd.
„
RIGHT OUTER JOIN – analogicznie jak wyżej.
select *
from A right outer join B
on a2, b2
A
a1
1
2
3
B
a2
a
b
c
b1
2
3
4
4
b2
a
a
b
d
a1
a2
b1 b1
--------------1
a
2 a
1
a
3 a
2
b
4 b
null null 4 d
11
Złączenia – cd.
„
FULL OUTER JOIN – połączenie obu powyższych, left i right outer
join.
select *
from A full outer join B
on a2, b2
A
a1
1
2
3
B
a2
a
b
c
b1
2
3
4
4
b2
a
a
b
d
a1
a2
b1
b1
-----------------1
a
2
a
1
a
3
a
2
b
4
b
null null 4
d
3
c
null null
12
Zadania
Dla każdego pracownika pokaż nazwisko
jego szefa; użyj wszystkich czterech
rodzajów złączeń, zaobserwuj i wyjaśnij
różnicę
„ Wykorzystując jedno w powyższych
rodzajów złączeń pokaż nazwę działu, w
którym nie pracują żadni pracownicy.
„
13

Podobne dokumenty