Tableaux représentent des relations d'affaires/associations. Les "relation[ship]s" que vous mentionnez sont des FK (clés étrangères) et qui ne sont pas nécessaires pour l'interrogation. Ils indiquent que les valeurs de sous-ligne pour certaines colonnes doivent également être des valeurs de sous-ligne pour certaines colonnes clés. Ce qu'il faut, c'est savoir ce qu'une ligne dit de la situation actuelle de l'entreprise lorsqu'elle se trouve dans un tableau. (Qui, compte tenu des situations qui se présentent, détermine les FK et autres contraintes.)
De Requis pour joindre 2 tables avec leurs FK dans une 3ème table :
Donc donné
-- 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, ....)
nous écrivons
ps_product s
JOIN ...
ON s.id_product = ...
...
JOIN ps_carrier c
ON ... = id_carrier
WHERE ...
pour obtenir des lignes où
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 ...
Vous devez connaître les prédicats de vos tables, puis JOIN ensemble les conditions ON ou WHERE des tables afin que le prédicat résultant corresponde aux lignes que vous souhaitez récupérer.