JOIN (złączenie) to operacja SQL łącząca wiersze z dwóch lub więcej tabel na podstawie warunku - najczęściej równości kluczy. Główne rodzaje: INNER (tylko dopasowane pary), LEFT/RIGHT (wszystko z jednej strony plus dopasowania z drugiej), FULL OUTER (wszystko z obu stron) i CROSS (każdy z każdym).
Analityk bez JOIN-ów nie zrobi w SQL praktycznie nic sensownego: dane w relacyjnych bazach są znormalizowane, czyli celowo rozbite na tabele - żeby je analizować, trzeba je z powrotem posklejać. To jeden z tych tematów, które w ogłoszeniach o pracę dla BA stoją w wymaganiach twardych.
W bazie MediFlow raport obłożenia przychodni wymaga czterech tabel naraz:
SELECT pr.nazwa, l.nazwisko, COUNT(*) AS wizyty
FROM wizyty w
JOIN lekarze l ON w.lekarz_id = l.id
JOIN przychodnie pr ON l.przychodnia_id = pr.id
JOIN pacjenci p ON w.pacjent_id = p.id
GROUP BY pr.nazwa, l.nazwisko;
Cztery tabele, jedno zapytanie, raport gotowy. Bez JOIN-ów: eksporty do Excela i wklejanie WYSZUKAJ.PIONOWO do końca świata.
Częsta pomyłka - i to taka, która produkuje błędne raporty trafiające na biurka zarządów: zwielokrotnienie wierszy przy złączeniu jeden-do-wielu. Jedna wizyta ma trzy procedury medyczne; po złączeniu wizyt z procedurami każda wizyta występuje trzy razy - i suma kosztów wizyt policzona na takim wyniku wychodzi trzykrotnie zawyżona. Zapytanie nie zgłasza błędu, liczby wyglądają wiarygodnie. Obrona: po każdym JOIN sprawdź liczbę wierszy i zrozum, co teraz reprezentuje jeden wiersz wyniku.