Tabulky představují obchodní vztahy/sdružení. "Vztahy", které uvádíte, jsou FK (cizí klíče), které nejsou potřeba pro dotazování. Uvádějí, že hodnoty podřádku pro některé sloupce musí být také hodnotami podřádku pro některé klíčové sloupce. Je potřeba vědět, co řádek říká o aktuální obchodní situaci, když je v tabulce. (Které vzhledem k tomu, jaké situace nastanou, určují FK a další omezení.)
Od Vyžadováno pro připojení ke 2 stolům se svými FK u 3. stolu :
Tak dáno
-- 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, ....)
píšeme
ps_product s
JOIN ...
ON s.id_product = ...
...
JOIN ps_carrier c
ON ... = id_carrier
WHERE ...
získat řádky kde
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 ...
Potřebujete znát predikáty svých tabulek a pak tabulky JOIN dohromady ON nebo WHERE podmínek, aby výsledný predikát byl pro řádky, které chcete zpět.
Existuje nějaké základní pravidlo pro sestavení SQL dotazu z popisu čitelného pro člověka?