sql >> Databáze >  >> RDS >> Mysql

Jak najdu vztahy mezi tabulkami, které se týkají dlouhé vzdálenosti? MySQL

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?




  1. MySQL - Význam PRIMARY KEY, UNIQUE KEY a KEY při společném použití při vytváření tabulky

  2. Dotaz MySQL – záznamy mezi dneškem a posledními 30 dny

  3. Je substr nebo LIKE rychlejší v Oracle?

  4. HAS_DBACCESS() – Zjistěte, zda má uživatel přístup k databázi na serveru SQL Server