Stoły reprezentuje relacje biznesowe/stowarzyszenia. Wspomniane "relacje [statki]" to FK (klucze obce), które nie są potrzebne do wykonywania zapytań. Stwierdzają, że wartości podrzędne dla niektórych kolumn muszą być również wartościami podrzędnymi dla niektórych kolumn kluczowych. To, co jest potrzebne, to wiedzieć, co wiersz mówi o aktualnej sytuacji biznesowej, gdy znajduje się w tabeli. (Które, biorąc pod uwagę zaistniałe sytuacje, określ FK i inne ograniczenia.)
Od Wymagane, aby połączyć 2 stoły z ich FK w trzecim stole :
Tak podane
-- rows where product [id_product] is supplied by [id_supplier] ...
ps_product(id_product, id_supplier, ...)
-- rows where carrier [id_carrier] has reference [id_reference] ...
ps_carrier(id_carrier, id_reference, ....)
piszemy
ps_product s
JOIN ...
ON s.id_product = ...
...
JOIN ps_carrier c
ON ... = id_carrier
WHERE ...
aby uzyskać wiersze, w których
product [p.id_product] is supplied by [p.id_supplier] ...
AND ...
AND s.id_product = ...
...
AND carrier [c.id_carrier] has reference [c.id_reference] ...
AND ... = id_carrier
AND ...
Musisz znać predykaty swoich tabel, a następnie JOIN razem tabele ON lub WHERE, aby wynikowy predykat dotyczył wierszy, które chcesz odzyskać.