MySQL: Łączenie tabel – JOIN i UNION


25 lipca 2013 / Michał Załęcki


Określenie bazy danych mianem relacyjnej dotyczy tak naprawdę modelu relacji, o który oparta jest baza danych.

Model relacji to model organizacji danych bazujący na matematycznej teorii mnogości, w szczególności na pojęciu relacji. Co to nam daje?

Dzięki pewnym związkom w strukturze przechowywanych w tabelach danych możemy je łączyć otrzymując w pojedynczym wierszu dane z kilku tabel, które są ze sobą powiązane, to co je łączy to właśnie relacja.

Struktura tabel

Omówimy proces łączenia tabel na dwóch bardzo prostych tabelach zawierających po jednej kolumnie z liczbami. Niektóre liczby będą wspólne dla obu tabel, a niektóre będą unikatowe.

JOIN i INNER JOIN

JOIN i INNER JOIN są sobie równoważne i powodują pokazanie tylko rekordów, które zostały dopasowane z obu tabel.

LEFT JOIN i LEFT OUTER JOIN

LEFT JOIN i LEFT OUTER JOIN są sobie równe, powodują pokazanie wszystkich rekordów z lewej tabeli niezależnie od tego czy dopasowano wartość z tabeli prawej.

RIGHT JOIN i RIGHT OUTER JOIN

RIGHT JOIN i RIGHT OUTER JOIN są sobie równe, powodują pokazanie wszystkich rekordów z prawej tabeli niezależnie od tego czy dopasowano wartość z tabeli lewej.

Gdzie się podział FULL OUTER JOIN?

Osoby znające SQL zauważą, że w MySQL czegoś zabrakło. FULL OUTER JOIN nie zostało zaimplementowane w MySQL, jest to połączenie RIGHT JOIN i LEFT JOIN. Aby uzyskać ten efekt będziemy musieli użyć alternatywnego rozwiązania. I w tym momencie pojawia się UNION i UNION ALL.

UNION

UNION jest operatorem teoriomnogościowym, sumuje obie kolumny, ale bez duplikatów.

UNION ALL

UNION ALL jest operatorem teoriomnogościowym, podobnie jak UNION sumuje obie kolumny, ale pozwala na duplikaty.



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.