Podstawy złączeń (JOIN): INNER JOIN

Zapytanie INNER JOIN w MySQL pozwala na łączenie dwóch lub więcej tabel w taki sposób, aby zwrócone zostały tylko te rekordy, które spełniają określony warunek w obu tabelach. Jest to najczęściej stosowane złączenie, ponieważ daje możliwość uzyskania tylko tych danych, które istnieją w obu tabelach.

INNER JOIN zwraca tylko te wiersze, które mają odpowiadające im rekordy w obu tabelach. Jeśli jeden z rekordów w jednej tabeli nie ma odpowiadającego rekordu w drugiej tabeli, nie zostanie uwzględniony w wyniku.

Podstawowa składnia zapytania INNER JOIN

  • INNER JOIN – wskazuje typ złączenia między tabelami.
  • ON – warunek łączenia, czyli wskazanie kolumny w tabelach, które będą ze sobą porównywane.
  • kolumny – kolumny, które mają zostać wyświetlone w wyniku zapytania.

✅ Przykład: Połączenie tabel uzytkownicy i zamowienia na podstawie wspólnej kolumny id_uzytkownika

📌 Opis:

  • Zwracamy imię i nazwisko użytkownika oraz identyfikator zamówienia dla tych użytkowników, którzy mają zamówienia.
  • Łączenie odbywa się na podstawie kolumny id_uzytkownika w tabeli zamowienia i kolumnie id w tabeli uzytkownicy.
Przykład
-- Podstawowa składnia
SELECT kolumny
FROM tabela1
INNER JOIN tabela2
ON tabela1.kolumna = tabela2.kolumna;

-- Przykład
SELECT uzytkownicy.imie, uzytkownicy.nazwisko, zamowienia.id_zamowienia
FROM uzytkownicy
INNER JOIN zamowienia
ON uzytkownicy.id = zamowienia.id_uzytkownika;

📌 Warunki złączenia

✅ Przykład: Łączenie tabel z dodatkowym warunkiem w zapytaniu

📌 Opis:

  • Łączymy dane z tabeli uzytkownicy i zamowienia na podstawie wspólnej kolumny, ale dodatkowo filtrujemy dane po dacie zamówienia (od 1 stycznia 2022 roku).
  • Warunki złączenia określamy za pomocą ON, a dodatkowe filtry używamy w WHERE.
Przykład
SELECT uzytkownicy.imie, zamowienia.id_zamowienia
FROM uzytkownicy
INNER JOIN zamowienia
ON uzytkownicy.id = zamowienia.id_uzytkownika
WHERE zamowienia.data_zamowienia >= '2022-01-01';

📌 Łączenie wielu tabel

✅ Przykład: Łączenie trzech tabel: uzytkownicy, zamowienia, produkty

📌 Opis:

  • Złączono trzy tabele: uzytkownicy, zamowienia, i produkty.
  • Zapytanie zwraca imię użytkownika, identyfikator zamówienia oraz nazwę produktu, który został zamówiony przez danego użytkownika.
Przykład
SELECT uzytkownicy.imie, zamowienia.id_zamowienia, produkty.nazwa
FROM uzytkownicy
INNER JOIN zamowienia
ON uzytkownicy.id = zamowienia.id_uzytkownika
INNER JOIN produkty
ON zamowienia.id_produktu = produkty.id;

📌 Optymalizacja zapytań z INNER JOIN

✅ Przykład: Użycie aliasów w zapytaniach

📌 Opis:

  • Warto stosować aliasy (np. u dla uzytkownicy i z dla zamowienia), aby zapytania były krótsze i bardziej czytelne.
  • Pomaga to w optymalizacji zapytań, zwłaszcza w przypadku dużych baz danych.
Przykład
SELECT u.imie, z.id_zamowienia
FROM uzytkownicy AS u
INNER JOIN zamowienia AS z
ON u.id = z.id_uzytkownika;

Podsumowanie

  • INNER JOIN łączy dane z dwóch lub więcej tabel, zwracając tylko te rekordy, które spełniają warunek złączenia w obu tabelach.
  • Do określenia, które rekordy mają być połączone, służy klauzula ON.
  • Jeśli rekord w jednej tabeli nie ma odpowiadającego rekordu w drugiej tabeli, nie zostanie uwzględniony w wyniku.
  • Możemy łączyć więcej niż dwie tabele, używając kolejnych złączeń INNER JOIN.
  • Używanie aliasów poprawia czytelność zapytań, szczególnie w przypadku łączenia wielu tabel.