Tabelle rappresentare relazioni/associazioni commerciali. Le "relazioni [navi]" che menzioni sono FK (chiavi esterne) e non sono necessarie per l'interrogazione. Affermano che i valori di subrow per alcune colonne devono essere anche valori di subrow per alcune colonne chiave. Ciò che serve è sapere cosa dice una riga sulla situazione aziendale attuale quando è in una tabella. (Che, date le situazioni che si presentano, determinano gli FK e altri vincoli.)
Da Necessario per unire 2 tavoli con i loro FK in un terzo tavolo :
Così dato
-- 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, ....)
scriviamo
ps_product s
JOIN ...
ON s.id_product = ...
...
JOIN ps_carrier c
ON ... = id_carrier
WHERE ...
per ottenere righe dove
Il prodotto 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 ...
Devi conoscere i predicati delle tue tabelle, quindi UNISCI insieme le tabelle ON o WHERE in modo che il predicato risultante sia per le righe che desideri.
Esiste una regola pratica per costruire query SQL da una descrizione leggibile?