Bazy danych Złączenia zewnętrzne

Transkrypt

Bazy danych Złączenia zewnętrzne
Małgorzata Krętowska
Politechnika Białostocka
Wydział Informatyki
Bazy danych
Pracownia specjalistyczna nr 5
Złączenia zewnętrzne. Zapytania złożone.
Zadania
1. Dla każdego departamentu podać liczbę pracujących tam osób (wypisać wszystkie
departamenty).
2. Wypisać nazwiska wszystkich pracowników (nawet tych bez kierowników) wraz z danymi
ich kierowników (id, nazwisko). Wyniki powinny być posortowane względem nazwiska
kierownika rosnąco, a następnie względem nazwiska pracownika malejąco.
3. Podać jaką kwotę wydano na realizację każdego zapisanego w bazie projektu (nazwa
projektu).
4. Dla każdego pracownika w bazie (nazwisko) podać ile zarobił przy realizacji projektów.
5. Wyznaczyć wszystkich tych pracowników, którzy pracują na tym samym stanowisku co p.
Nazwisko3.
6. Podać listę pracowników, którzy zarabiają więcej niż p. Nazwisko4 mniej niż p. Nazwisko7.
7. Podać nazwisko i identyfikator najdłużej pracującego pracownika.
8. Podać listę pracowników zatrudnionych później niż p. Nazwisko3.
9. Pracownicy zarabiający mniej niż średnia wartość pensji. (+ z tego samego departamentu
co p.Nazwisko5)
10. Podać nazwiska tych pracowników, którzy zarabiają więcej niż p.Nazwisko5.
11. Dla każdego departamentu wyznaczyć najlepiej zarabiającego pracownika.
12. Podać departament, w którym pracuje najmniej pracowników.
Pomoc
Złączenia zewnętrzne
Złączenie lewe - LEFT OUTER JOIN
W złączeniu zewnętrznym lewym zwracane są wszystkie wiersze występujące w
tabeli z lewej strony, a wiersze z prawej tabeli, które nie zostały
znalezione, wypełnione są wartościami null.
SELECT *
FROM Tab1
LEFT OUTER JOIN Tab2 ON Tab1.ID = Tab2.ID;
lub
SELECT tab1.*,tab2.Field1
FROM tab1, tab2
WHERE tab1.ID=tab2.ID(+);
Złączenie prawe - RIGHT OUTER JOIN
W złączeniu zewnętrznym prawym zwracane są wszystkie wiersze występujące
w tabeli z prawej strony, a wiersze z lewej tabeli, które nie zostały
znalezione, wypełnione są wartościami null.
SELECT *
FROM Tab1
RIGHT OUTER JOIN Tab2 ON Tab1.ID = Tab2.ID;
lub
SELECT tab1.*,tab2.Field1
FROM tab1, tab2
WHERE tab1.ID(+)=tab2.ID;
Złączenie pełne - FULL OUTER JOIN
W rezultatach zapytania SQL obecne są wiersze złączone wewnętrznie,
rozszerzone o rekordy nie zwrócone z obydwu tabel, wypełnione nullami
SELECT *
FROM Tab1
FULL OUTER JOIN Tab2 ON Tab1.ID = Tab2.ID ;
Zapytania złożone
Podzapytanie - polecenie SELECT zagnieżdżone w innym poleceniu SELECT.
Umożliwia konstruowanie zapytania odwołującego się do wartości wybranych
przez inne polecenie SELECT.
SELECT kolumna1, kolumna2,...
FROM tabela
WHERE kolumna = (SELECT kolumna
FROM tabela
WHERE warunek)
Przebieg wykonania zapytania:
•
realizacja zapytania wewnętrznego
•
na podstawie wartości zwróconej przez blok wewnętrzny przetwarzany
jest blok główny zapytania
W przypadku zapytań zwracających jeden wiersz mogą być stosowane zwykłe
operatory porównania: =, >, <=,...
Porównanie kilku wartości
WHERE (kolumna1, kolumna 2...) = (SELECT kol1, kol2...)
•
kolumny w bloku zewnętrznym powinny być ujęte w nawiasy i
oddzielone przecinkami
•
powinna być zgodność co do liczby i typu kolumn wybieranych w
bloku wewnętrznym i kolumn bloku zewnętrznego porównywanych z nimi
Operatory ANY i ALL
WHERE kol1 >ANY (select kol ….)
•
Operatory ANY i ALL można stosować w podzapytaniach zwracających
więcej niż jeden wiersz. Wykorzystuje się je w klauzulach WHERE I
HAVING łącznie z operatorami porównywania (=; !=; <; >; <=; >=)
•
Operator ANY powoduje akceptację (spełnienie warunku) po
stwierdzeniu zgodności wyrażenia z którąkolwiek z wartości
zwracanych przez podzapytanie
•
Operator ALL służy do porównania z wszystkimi wartościami
zwracanymi przez podzapytanie
•
Przed operatorami ANY i ALL można stosować zaprzeczenie – NOT

Podobne dokumenty