Połączenia - JOINy
Połączenia umożliwiają połączenie wierszy pochodzących z dwóch tabel.
Wyróżnić można trzy fazy logicznego przetwarzania połączenia: 1. Wyznaczenie iloczynu kartezjańskiego. 2. Filtr klauzuli ON. 3. Dodanie wierszy zewnętrznych.
W zależności od faz logicznego przetwarza połączenia wyróżnia się trzy podstawowe rodzaje połączeń: połączenia skrośne, połączenia wewnętrzne i połączenia zewnętrzne.
Połączenie skrośne czyli CROSS JOIN - w tym połączeniu występuje tylko pierwsza faza, czyli wyznaczenie iloczynu kartezjańskiego. Iloczyn kartezjański dwóch tabel to wyznaczenie wszystkich możliwych kombinacji wierszy z jednej tabeli z wierszami z drugiej. W sytuacji gdy jedna tabela ma x wierszy, a druga ma y wierszy to zastosowaniu połączenia skrośnego uzyskamy x * y wierszy.
Połączenie wewnętrzne czyli INNER JOIN (można też zapisać bez INNER, czyli sam JOIN) - w tym połączeniu występuj wyznaczenie iloczynu kartezjańskiego i filtr klauzuli ON. To połączenie służy do dopasowania wierszy z dwóch tabel na podstawie pewnych kryteriów zawartych w klauzuli ON.
Połączenie zewnętrzne - w tym połączeniu występują wszystkie trzy fazy logicznego przetwarzania połączenia, czyli kolejno następuje: wyznaczenie iloczynu kartezjańskiego, filtr klauzuli ON, dodanie wierszy zewnętrznych. Dodanie wierszy zewnętrznych polega na dodaniu tych wierszy, które nie spełniają warunku zawartego w ON. W zależności z jakiej tabeli wiersze zewnętrzne mają być dodane wyróżnia się: LEFT OUTER JOIN, RIGHT OUTER JOIN i FULL OUTER JOIN. Słowo OUTER może być pominięte i można zapisać: LEFT JOIN, RIGHT JOIN, FULL JOIN.
Do pokazania działania joinów zrobiłem dwie tabele Książka i Wydawnictwo.
Tabela Książka:
IMAGES
Tabela Wydawnictwo:
IMAGES
CROSS JOIN
SELECT K.*, W.*
FROM [dbo].[Ksiazka] as K
CROSS JOIN [dbo].[Wydawnictwo] as W
Otrzymany rezultat:
IMAGES
INNER JOIN
SELECT K.*, W.*
FROM [dbo].[Ksiazka] as K
INNER JOIN [dbo].[Wydawnictwo] as W on K.IdWydawnictwa = W.IdWydawnictwa
Otrzymany rezultat:
IMAGES
OUTER JOIN
LEFT OUTER JOIN
SELECT K.*, W.*
FROM [dbo].[Ksiazka] as K
LEFT OUTER JOIN [dbo].[Wydawnictwo] as W on K.IdWydawnictwa = W.IdWydawnictwa
Otrzymany rezultat:
IMAGES
Widać, że z tabeli Książki są wszystkie wiersze.
RIGHT OUTER JOIN
SELECT K.*, W.*
FROM [dbo].[Ksiazka] as K
RIGHT OUTER JOIN [dbo].[Wydawnictwo] as W on K.IdWydawnictwa = W.IdWydawnictwa
Otrzymany rezultat:
IMAGES
Przy RIGHT OUTER JOIN dodawane są wiersze z prawej tabeli, w tym przypadku z tabeli Wydawnictwo.
FULL OUTER JOIN
SELECT K.*, W.*
FROM [dbo].[Ksiazka] as K
FULL OUTER JOIN [dbo].[Wydawnictwo] as W on K.IdWydawnictwa = W.IdWydawnictwa
Otrzymany rezultat:
IMAGES
Kolejnym przykładem będzie zapytanie, które wybierze te wydawnictwa, które nie mają żadnej książki.
SELECT W.*
FROM [dbo].[Ksiazka] as K
     RIGHT OUTER JOIN [dbo].[Wydawnictwo] as W on K.IdWydawnictwa = W.IdWydawnictwa
WHERE K.IdKsiazki IS NULL
Otrzymany rezultat:
IMAGES
O stronie

W początkowym okresie miała to być strona wyłącznie o programowaniu. Z biegiem czasu postanowiłem również umieszczać wpisy z innych dziedzin.

W głowie mam tysiąc pomysłów, a te które zrealizowałem umieszczam na tym blogu.

Ostatnio dodane posty
Koparki | Wszystko | 03.2023
Kurs operatora koparki i koparko-ładowarki
Mądrości życiowe | Wszystko | 03.2023
Rób mniej, a częściej
Programowanie | C# | 03.2023
Operator inkrementacji ++ i operator dekrementacji --
Rolnictwo | Ogrodnictwo | 03.2023
Siew warzyw do doniczek cz. I
Programowanie | T-SQL | 09.2018
Połączenia - JOINy
Kontakt

W celu kontaktu proszę o wiadomość e-mail na adres: mati.kapka@gmail.com