W relacyjnych bazach danych relacja "jeden do wielu" jest realizowana najczęściej przez klucz obcy w tabeli po stronie "wiele", który wskazuje na klucz główny w tabeli po stronie "jeden" (albo odwrotnie – zależnie od przyjętego modelu). Aby wyświetlić imię osoby oraz odpowiadające mu hobby, trzeba połączyć obie tabele tak, aby serwer bazy danych wiedział, które wiersze do siebie pasują.
Zapytanie SELECT imie, hobby FROM Osoby JOIN Zainteresowania ON Osoby.Zainteresowania_id = Zainteresowania.id; jest poprawne, ponieważ:
- używa jawnego złączenia JOIN,
- zawiera warunek dopasowania w klauzuli ON,
- pobiera dokładnie te kolumny, które są potrzebne do wyniku (imię i hobby).
Odpowiedź z warunkiem Osoby.id = Zainteresowania.id jest typowym błędem: łączy tabele po kolumnach o tej samej nazwie, ale bez gwarancji, że reprezentują to samo powiązanie. W praktyce może to dać brak wyników albo przypadkowe dopasowania.
Odpowiedź o nietypowej kolejności elementów (warunek między nazwą tabeli a FROM) jest po prostu niepoprawna składniowo w standardowym SQL, więc nie wykona się.
Zapytanie bez warunku łączenia (tylko dwie tabele w FROM) tworzy iloczyn kartezjański: każda osoba zostanie zestawiona z każdym hobby, co daje błędne i zwielokrotnione wyniki. Na egzaminie warto zapamiętać zasadę: jeśli w FROM są dwie tabele, to prawie zawsze potrzebujesz JOIN ... ON (albo WHERE z warunkiem łączenia), aby wynik był logicznie poprawny.