Lekcja 14: Łączenie tabel - INNER JOIN

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Lekcja 14: Łączenie tabel - INNER JOIN
Required In Progress

Pobieranie danych z więcej niż jednej tabeli jednocześnie

Problem: Mamy ID_Klasy w tabeli Uczniowie, ale nazwa klasy (np. "3A") i nazwisko wychowawcy są w tabeli Klasy. Jak wyświetlić nazwisko ucznia obok nazwy jego klasy w jednym zapytaniu?

Odpowiedź: operacja łączenia (JOIN).

Idea: "łączenia" tabel na podstawie pasujących kluczy (PK = FK)

Operacja JOIN pozwala na "sklejenie" dwóch (lub więcej) tabel w poziomie (kolumna obok kolumny). Łączenie odbywa się na podstawie warunku łączenia – najczęściej jest to równość między kluczem obcym (FK) w jednej tabeli a kluczem głównym (PK) w drugiej.

Składnia INNER JOIN

INNER JOIN (złączenie wewnętrzne) jest najczęstszym i domyślnym typem złączenia. Działa jak "część wspólna" zbiorów — zwraca tylko te wiersze, dla których istnieje pasujący rekord w obu łączonych tabelach.

SELECT...
FROM TabelaA
INNER JOIN TabelaB
  ON TabelaA.KolumnaFK = TabelaB.KolumnaPK;

Przykład: Pobranie nazwisk uczniów i nazw ich klas

Zakładamy:

  • Tabela Uczniowie (zawiera FK ID_Klasy)
  • Tabela Klasy (zawiera PK ID_Klasy oraz kolumnę NazwaKlasy)
SELECT
  Uczniowie.Nazwisko,
  Uczniowie.Imie,
  Klasy.NazwaKlasy
FROM Uczniowie
INNER JOIN Klasy
  ON Uczniowie.ID_Klasy = Klasy.ID_Klasy;

Ważna uwaga: Jeśli w obu tabelach istnieje kolumna o tej samej nazwie (tutaj: ID_Klasy), musimy używać pełnej, kwalifikowanej nazwy (NazwaTabeli.NazwaKolumny), aby baza wiedziała, o którą kolumnę chodzi.

Rezultat INNER JOIN: Jeżeli w tabeli Uczniowie znajdzie się uczeń z ID_Klasy = NULL (nieprzypisany do klasy), INNER JOIN nie znajdzie dla niego dopasowania w tabeli Klasy, więc taki uczeń nie pojawi się w wynikach zapytania.

Gdzie znaleźć więcej informacji

Materiały o złączach zewnętrznych (np. LEFT JOIN/RIGHT JOIN) oraz zachowaniu NULL przy łączeniach można znaleźć w lekcjach dotyczących złączeń (Lekcja 15) . Informacje o kluczach głównych i obcych (PK/FK) są opisane w Lekcji 22 , a podstawy SELECT — w Lekcji 3 .