Oferty pracy dla inżynierów
  • StrefaInzyniera.pl (current)
  • Oferty pracy
  • Automatyka
    • Uprawnienia elektryczne SEP
    • Elektrotechnika
    • Elektronika
    • Automatyka
    • Robotyka
  • Przemysł
    • Przemysł
    • Obróbka metali
    • CAD
    • CATIA
    • Autodesk Inventor
  • IT
    • JAVA
    • C++
    • Sieci
  • Firmy
  • Dla firm
    • Rejestracja - profil firmy
    • Dodaj ofertę pracy - bezpłatnie
    • Publikacja artykułów
    • Kontakt
  • STREFA INŻYNIERA
  • Oferty pracy
  • Automatyka
    • Uprawnienia elektryczne SEP
    • Elektrotechnika
    • Elektroniki
    • Automatyki
    • Robotyka
  • Przemysł
    • Przemysł
    • Obróbka metali
    • CAD
    • CATIA
    • Autodesk Inventor
  • IT
    • JAVA
    • C++
    • Sieci
  • Firmy
  • Dla firm
    • Rejestracja - profil firmy
    • Dodaj ofertę pracy - bezpłatnie
    • Publikacja artykułów
    • Kontakt
  • Logowanie
  • Zaloguj się
Categories SQL

Złączenia pełne

Oprócz złączeń lewostronnych i prawostronnych istnieje jeszcze jeden rodzaj złączenia zewnętrznego, a mianowicie złączenie pełne (ang. full join). W przypadku złączeń zewnętrznych i wewnętrznych jedna tabela pełni rolę tabeli nadrzędnej, a druga podrzędnej. Innymi słowy, jedna z nich zawiera dane wymagane, a druga opcjonalne. Oznacza to, że gdy dokonujemy złączenia obu tabel, nie muszą występować wiersze dołączone z tabeli podrzędnej (lub zawierającej opcjonalne dane).

W złączeniu wewnętrznym obie tabele są nadrzędne (lub wymagane). Gdy łączone są dwie tabele, aby dany wiersz pojawił się w wyniku, musi istnieć powiązanie danych z obu kolumn, za pomocą których dokonano złączenia.

W przypadku złączenia pełnego obie tabele pełnią rolę tabeli podrzędnej (lub zawierającej opcjonalne dane). W tej sytuacji, gdy dokonujemy złączenia tabeli A z tabelą B, wyświetlamy 1) wszystkie wiersze z tabeli A, nawet jeśli brak w tabeli B dopasowanych do nich wierszy, a także 2) wszystkie wiersze z tabeli B, nawet jeśli nie został do nich dopasowany żaden wiersz z tabeli A.

 

RÓŻNICE W RAMACH INNYCH BAZ DANYCH: MySQL

W odróżnieniu od Microsoft SQL Server i Oracle, w MySQL nie istnieją złączenia pełne. Przyjrzyjmy się teraz przykładowi złączenia dwóch tabel. Pierwszą z nich będzie tabela Filmy:

IDFilmu TytułFilmu Klasyfikacja
1 To właśnie miłość R
2 Północ – północny zachód brak kategorii
3 Miłość i śmierć PG
4 Truman Show PG
5 Taka miłość się nie zdarza R
6 Do diabła z miłością PG-13
7 Gdzie jest Nemo? G

 

Druga tabela to KlasyfikacjaFilmów z opisem klasyfikacji podanym przez Amerykańskie Stowarzyszenie Przemysłu Filmowego (ang. Motion Picture Association of America).

IDKlasyfikacji Klasyfikacja OpisKlasyfikacji
1 G Dozwolony dla wszystkich grup wiekowych
2 PG Wskazany nadzór rodzica/rodziców
3 PG-13 Szczególnie wskazany nadzór
rodzica/rodziców
4 R Film można obejrzeć jedynie z rodzicami
5 NC-17 Film jedynie dla osób powyżej 17. roku życia

 

Tabela Filmy zawiera listę filmów oraz ich klasyfikację według Amerykańskiego Stowarzyszenia Przemysłu Filmowego. Tabela KlasyfikacjaFilmów zawiera listę klasyfikacji wraz z ich opisami. Powiedzmy, że chcemy wyświetlić wszystkie wiersze uzyskane w wyniku złączenia obu tabel. Do tego celu, a więc do wyświetlenia wszystkich wierszy z tabeli Filmy oraz KlasyfikacjaFilmów, użyjemy klauzuli FULL JOIN. Dzięki złączeniu pełnemu otrzymamy wszystkie wiersze z obu tych tabel, nawet jeśli niektóre wiersze z jednej tabeli nie znalazły dopasowania w drugiej. Instrukcja SELECT będzie zatem miała następującą postać:

SELECT
OpisKlasyfikacji AS 'Opis klasyfikacji filmu',
TytułFilmu AS 'Tytuł filmu'
FROM Filmy
FULL JOIN KlasyfikacjaFilmów
ON Filmy.Klasyfikacja = KlasyfikacjaFilmów.Klasyfikacja
ORDER BY OpisKlasyfikacji, TytułFilmu

a jej wynik to:

Opis klasyfikacji filmu Tytuł filmu
NULL Północ – północny zachód
Dozwolony dla wszystkich grup wiekowych Gdzie jest Nemo?
Film jedynie dla osób powyżej 17. roku życia NULL
Film można obejrzeć jedynie z rodzicami Taka miłość się nie zdarza
Film można obejrzeć jedynie z rodzicami To właśnie miłość
Szczególnie wskazany nadzór rodzica/rodziców Do diabła z miłością
Wskazany nadzór rodzica/rodziców Miłość i śmierć
Wskazany nadzór rodzica/rodziców Truman Show

Zauważ, że w wyniku występują dwie puste komórki, co jest bezpośrednim skutkiem zastosowania klauzuli FULL JOIN. Jeśli chodzi o wartość NULL w kolumnie Opis klasyfikacji filmu w przypadku filmu Północ – północny zachód, wynika ona z braku dopasowania wiersza dla tej produkcji filmowej w tabeli KlasyfikacjaFilmów. W przypadku drugiej komórki z wartością NULL żaden film nie został przypisany do kategorii „Film jedynie dla osób powyżej 17. roku życia”, ponieważ w tabeli Filmy nie zostały znalezione żadne wiersze pasujące do tej klasyfikacji.

Zwróć ponadto uwagę na to, że w powyższej instrukcji nie zastosowaliśmy aliasów ani w stosunku do nazw tabel, ani też w odniesieniu do nazw kolumn wymienionych na liście_kolumn. Znalazła się na niej na przykład kolumna TytułFilmu bez wskazania nazwy tabeli, z której pochodzi (Filmy.TytułFilmu). Takie podejście było możliwe z uwagi na fakt, że każda z kolumn wymienionych w naszej instrukcji SELECT znajduje się tylko w jednej tabeli. Nie ma więc potrzeby wskazywania dodatkowo jej nazwy w połączeniu z nazwą kolumny.

W praktyce złączenie pełne jest rzadko stosowane z prostej przyczyny — ten typ relacji między tabelami występuje raczej sporadycznie. Jego celem jest wyświetlenie danych, w przypadku których istnieją niedopasowane wiersze w obu łączonych tabelach. Zazwyczaj będziemy jednak zainteresowani wyświetleniem wyłącznie tych danych, w przypadku których występuje pełne dopasowanie wierszy z obu łączonych tabel (złączenie wewnętrzne) bądź dopasowanie jednostronne (złączenie lewostronne lub prawostronne).

 

Język SQL. Przyjazny podręcznik. Wydanie II Autor: Larry Rockoff Wydawnictwo: Helion

Zaloguj się aby dodać komentarz

Podobne artykuły

« Złączenia krzyżowe CROSS JOINKolejność tabel w złączeniach zewnętrznych »

Podziel się ze znajomymi tym artykułem - udostępnij na FB lub wyślij e-maila korzystając z poniższych opcji:

AngielskiTechniczny.edu.pl
Oferty pracy dla inżynierów
Oferty pracy dla inżynierów

Technolog

PIT-RADWAR S.A.
Warszawa, mazowieckie

Automatyk / Programista

HR Partner
Gniezno, wielkopolskie

Technolog tworzyw (proces ekstruzji, technologia wylewania folii)

Atus Group
Sadkowa Góra, gm. Borowa, Podkarpackie, podkarpackie

Technolog tworzyw (proces ekstruzji, technologia wylewania folii)

Atus Group
Sadkowa Góra, gm. Borowa, Podkarpackie, podkarpackie

Brygadzista / Team Leader (instalacje elektryczne) z j. francuskim | DARMOWE ZAKWATEROWANIE I DOJAZD Z/DO FRANCJI |

HR Partner
Radom, mazowieckie
17 000-20 000 zł brutto

Monter instalacji elektrycznych (budownictwo przemysłowe) z j. francuskim | DARMOWE ZAKWATEROWANIE I DOJAZD DO/Z FRANCJI |

HR Partner
Radom, mazowieckie
14 000-17 000 zł brutto

wszystkie oferty
PracaTechniczna.pl

Strefainzyniera.pl - rynek, praca, rozwój - wszystko co ważne dla inżynierów

  • Dla pracodawcy
  • Artykuły
  • Praca
  • Publikacje
  • Popularne stanowiska
  • Offer in English
  • Regulamin
  • Regulamin dla klientów
  • Polityka prywatności
  • Polityka cookies
  • Kontakt

© 2011 - 2021 NetPortal

Mapa strony Letnisko blisko