• Nie Znaleziono Wyników

Wybieranie danych z wielu tabel polega na użyciu więcej niż jednej tabeli w klauzuli FROM i, najczęściej, kolumn z więcej niż jednej tabeli w klauzuli SELECT i WHERE. Przykład:

N/A
N/A
Protected

Academic year: 2021

Share "Wybieranie danych z wielu tabel polega na użyciu więcej niż jednej tabeli w klauzuli FROM i, najczęściej, kolumn z więcej niż jednej tabeli w klauzuli SELECT i WHERE. Przykład:"

Copied!
6
0
0

Pełen tekst

(1)

Wybieranie danych z wielu tabel polega na użyciu więcej niż jednej tabeli w klauzuli FROM i, najczęściej, kolumn z więcej niż jednej tabeli w klauzuli SELECT i WHERE.

Przykład:

SELECT *

FROM EMPLOYEE, CUSTOMER;

Wybieranie danych z wielu tabel, z użyciem złączenia, wiąże się z istnieniem warunków dokonujących złączeń odpowiednich wierszy jednych tabel z innymi na podstawie istnienia w nich kolumn z takimi samymi wartościami identyfikującymi wiersze (lub doprowadzenia do tego stanu za pomocą przekształceń).

Przykład:

SELECT *

FROM EMPLOYEE, CUSTOMER

WHERE employee_id = salesperson_id;

Szczególnym przypadkiem wybierania danych z wielu tabel jest wielokrotne użycie w klauzuli FROM tej samej tabeli, praktycznie wymaga to aliasowania tabel.

Przykład:

SELECT *

FROM EMPLOYEE sz, EMPLOYEE pr WHERE sz.employee_id = pr.manager_id;

(2)

Użycie tabel w klauzuli FROM nie powoduje konieczności użycia kolumn tych tabel w klauzuli SELECT, chociaż najczęściej tak jest.

Przykłady:

SELECT 1

FROM EMPLOYEE, CUSTOMER

WHERE employee_id = salesperson_id;

lub

SELECT first_name, last_name FROM EMPLOYEE, CUSTOMER

WHERE employee_id = salesperson_id;

Użycie tabel w klauzuli FROM nie powoduje konieczności użycia kolumn tych tabel w klauzuli WHERE chociaż prawie zawsze tak powinno być.

Ewentualne niezłączenie którejkolwiek z tabel daje iloczyn kartezjański – zazwyczaj jest to nieprawidłowość.

Przykład:

SELECT *

FROM EMPLOYEE, CUSTOMER;

a

SELECT *

FROM EMPLOYEE, CUSTOMER

WHERE employee_id = salesperson_id;

(3)

Kolumny występujące w klauzuli WHERE, przy złączeniach, używane są w charakterze innym niż filtracja w klauzuli WHERE i służą do łączenia wierszy tabel z klauzuli FROM. Wykorzystanie warunków w charakterze łączenia jest niezależne od wykorzystania warunków w charakterze filtracji.

Przykład:

SELECT first_name, last_name FROM EMPLOYEE, CUSTOMER

WHERE employee_id = salesperson_id AND city = 'NEW YORK';

W przypadku, gdy nazwy kolumn używanych w zdaniu SELECT należą do więcej niż jednej tabeli użytej w klauzuli FROM należy:

- albo poprzedzać takie kolumny pełną nazwą tabeli (ewentualnie wraz z nazwą schematu), o ile nie są to te same tabele

- albo poprzedzać takie kolumny poprzedzać aliasem zdefiniowanym dla tabeli w klauzuli FROM

Przykład:

SELECT first_name, last_name, function FROM EMPLOYEE e, JOB j

WHERE e.JOB_ID = j.JOB_ID;

(4)

Złączenia tabel dzieli się na:

- równościowe i w takim przypadku porównywane w warunku złączenia wartości muszą sobie zupełnie odpowiadać.

Przykład:

SELECT pro.DESCRIPTION, pri.LIST_PRICE FROM PRODUCT pro, PRICE pri

WHERE pro.PRODUCT_ID = pri.PRODUCT_ID

- nierównościowe i w takim przypadku może nastąpić łączenie na podstawie zawierania się w przedziały

Przykład:

SELECT first_name, last_name, salary, GRADE_ID FROM EMPLOYEE e, SALARY_GRADE sg

WHERE e.SALARY BETWEEN sg.LOWER_BOUND AND sg.UPPER_BOUND

lub dzieli na:

- złączenie wewnętrzne (INNER JOIN - dotychczas prezentowane)

- złączenie zewnętrzne(OUTER JOIN)

Złączenie zewnętrzne ma na celu umożliwić zwrócenie wiersza przy takim rezultacie złączenia, w którym żaden rekord z tabeli dołączanej nie odpowiada wierszowi łączonemu.

W celu oznaczenia kolumny, której wartość nie jest znaleziona (kolumny z niepełną informacją) stosuje się sekwencję znaków:

„(+)”.

(5)

Przykład:

Różnica w wykonaniu:

SELECT DISTINCT first_name, last_name, function FROM EMPLOYEE, CUSTOMER, JOB

WHERE employee_id = salesperson_id

AND EMPLOYEE.JOB_ID = JOB.JOB_ID;

a

SELECT DISTINCT first_name, last_name, function FROM EMPLOYEE, CUSTOMER, JOB

WHERE employee_id = salesperson_id(+) AND EMPLOYEE.JOB_ID = JOB.JOB_ID;

(6)

Zadania:

1. Wybrać nazwiska i imiona pracowników oraz miasta w jakich pracują. Nazwy miast wyświetlić z początkowymi literami wielkimi – reszta liter małych.

2. Wybrać wszystkich menadżerów (nazwiska i imiona) i posortować alfabetycznie.

3. Korzystając ze złączenia wybrać tych handlowców, którzy pracują w miejscowościach swoich klientów.

4. Wybrać nazwisko i imię szefa oraz nazwisko i imię pracownika tego szefa jeśli zarabia on więcej od szefa.

5. Wybrać nazwę nazwisko i imię pracownika, nazwę klienta oraz

nazwy towarów jakie kupił i ich ówczesną cenę.

Cytaty

Powiązane dokumenty

runku tworzenia różnych form codziennego życia, z których część realizuje się już teraz (nie tylko w ramach eksperymentów wspólnotowych, także w szerszej skali zmienia

„mowę” tę oblubieniec i oblubienica odczytują w pełnej prawdzie osoby i miłości, wówczas coraz głębiej się przekonują, że granicą ich przynależności jest

Działania teatralne, prowadzone tam od lat przez Teatr Węgajty, pozwalają im porozumie- wać się poza strefą kontroli, uzewnętrzniać uczucia, nawiązywać relacje ze sobą

standardowy adres warstwy łącza danych, wymagane dla każdego urządzenia podłączonego do sieci LAN żadne z powyższych wyjaśnień nie jest

Nikt na razie nie dopatruje się dobrodziejstw, jakie może nieść ze sobą finansowanie z budżetu państwa, a raczej często słyszę zaniepokojenie zbliżającą się

Na studiach lekarskich jest wiele przedmiotów mało przydatnych w praktyce klinicznej (biofizyka, chemia organiczna, historia medycyny itd.), a nie ma możliwo- ści

Surowicze zapalenie ucha środkowego (obec- ność płynu wysiękowego w uchu środkowym przy braku zakażenia) często rozwija się po przebyciu ostrego zapalenia ucha środkowego,

Niestety, być może ni- gdy nie dowiemy się wiele o tym, jak się zachowywali ani jaki był ich umysł.. Znacznie większe szanse mamy na rozwiązanie tajemnicy stosunkowo nie-