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: |
Tabela Wydawnictwo: |
CROSS JOIN |
SELECT K.*, W.* FROM [dbo].[Ksiazka] as K CROSS JOIN [dbo].[Wydawnictwo] as W |
Otrzymany rezultat: |
INNER JOIN |
SELECT K.*, W.* FROM [dbo].[Ksiazka] as K INNER JOIN [dbo].[Wydawnictwo] as W on K.IdWydawnictwa = W.IdWydawnictwa |
Otrzymany rezultat: |
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: |
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: |
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: |
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: |
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ść |