Łączenie tabel w SQL

Słownik kwalifikacji INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Łączenie tabel polega na pobieraniu danych z więcej niż jednej tabeli w jednym zapytaniu. Stosuje się je wtedy, gdy informacje są rozdzielone między kilka tabel, ale mają wspólne kolumny, np. nr_id, id_klienta, wyrob_id.

Stara składnia z przecinkami

W starszych zapytaniach tabele podaje się po przecinku w klauzuli FROM, a warunki połączenia zapisuje w WHERE:

SELECT *
FROM producent, hurtownia, sklep, serwis
WHERE producent.nr_id = hurtownia.nr_id
  AND hurtownia.nr_id = sklep.nr_id;

Takie zapytanie pobiera dane ze wszystkich tabel wymienionych po FROM, ale zwraca tylko te kombinacje wierszy, które spełniają warunki z WHERE.

Zalecana składnia JOIN

Czytelniejszy zapis wykorzystuje JOIN:

SELECT *
FROM producent
JOIN hurtownia ON producent.nr_id = hurtownia.nr_id
JOIN sklep ON hurtownia.nr_id = sklep.nr_id
JOIN serwis ON sklep.nr_id = serwis.nr_id;

Najczęściej używany jest INNER JOIN, który zwraca tylko pasujące rekordy z łączonych tabel.

Na co uważać na egzaminie?

  • Liczbę tabel określa się po klauzuli FROM lub liczbie użytych JOIN.
  • Warunki połączenia zwykle porównują kolumny z różnych tabel.
  • Warunek typu producent.nr_id = 1 jest filtrem ograniczającym wynik do konkretnej wartości.
  • SELECT * oznacza zwrócenie wszystkich kolumn z tabel biorących udział w zapytaniu.

W podanym pytaniu występują cztery tabele: producent, hurtownia, sklep, serwis, a końcowy filtr dotyczy parametru nr_id.