You are on page 1of 15

Pobieranie danych

z kilku tabel.
Pobieranie danych z kilku tabel.
Omawiane do tej pory zapytania dotyczyły pojedynczych tabel. Takie rozwiązanie
nie zawsze jest wystarczające, w praktyce bowiem dane zapisywane są najczęściej
w wielu różnych tabelach.
Pobieranie danych z kilku tabel.
Łączenie tabel
SELECT id, imie, nazwisko FROM osoba;

SELECT osoba.id, osoba.imie, osoba.nazwisko, zamowienia.idklient,


zamowienia.towar, zamowienia.ilosc, zamowienia.data FROM osoba, zamowienia
ORDER BY imie;
Łączenie tabel
SELECT id, imie, nazwisko FROM osoba;

SELECT osoba.id, osoba.imie, osoba.nazwisko, zamowienia.idklient,


zamowienia.towar, zamowienia.ilosc, zamowienia.data FROM osoba, zamowienia
ORDER BY imie;
Pobieranie danych z kilku tabel.
Łączenie tabel
Przy określaniu kolumny zaleca się, żeby stosować zapis tabela.kolumna

Przykład:
Dla tabeli o nazwie osoba i kolumnie o nazwie id

osoba.id
Łączenie tabel
Serwer wykonał tak zwane pełne złączenie tabel, w którym każdy wiersz z tabeli
osoba został połączony z każdym wierszem z tabeli zamowienia (iloczyn
kartezjański obu tabel).
Liczba zwróconych wierszy jest równa liczbie wierszy z pierwszej tabeli
pomnożonej przez liczbę wierszy z drugiej tabeli.

W celu wyświetlenia listy osób wraz z zamówieniami należy do zapytania dodać


warunek wiążący osoby i zrealizowane przez te osoby zamówienia.
Łączenie tabel
Iloczyn kartezjański nie jest oczekiwanym wynikiem złączenia tabel.
Złączenie krzyżowe to złączenie powstałe jako iloczyn kartezjański dwóch tabel.
Tego typu połączenia są rzadko stosowane.

W celu wyświetlenia listy osób wraz z zamówieniami należy do zapytania dodać


warunek wiążący osoby i zrealizowane przez te osoby zamówienia.
Pełne złączenie tabel
Pobieranie danych z wielu tabel:

SELECT osoba.imie, osoba.nazwisko, zamowienia.idklient,

zamowienia.towar, zamowienia.ilosc, zamowienia.data

FROM osoba, zamowienia WHERE

osoba.id=zamowienia.idklient ORDER BY nazwisko;


Aliasy zamiast pełnych nazw tabel.
Zamiast pełnych nazw tabel często stosuje się aliasy, jedno lub dwuliterowe.
Pozwala to znaczne skrócenie zapisu, na przykład zamiast pisać osoba.imie
wystarczy o.imie

SELECT o.id, o.imie, o.nazwisko, z.idklient, z.towar, z.ilosc, z.data FROM osoba
AS o, zamowienia AS z WHERE o.id=z.idklient ORDER BY imie;
Aliasy zamiast pełnych nazw tabel.
Aliasy zamiast pełnych nazw tabel.
Ponieważ słowo AS jest opcjonalne, można także użyć konstrukcji:

SELECT o.id, o.imie, o.nazwisko, z.idklient, z.towar, z.ilosc, z.data FROM osoba
o, zamowienia z WHERE o.id=z.idklient ORDER BY imie;

You might also like