| 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ść |