Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć relacje między tabelami, które są powiązane na odległość? MySQL

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ć.

Czy istnieje jakaś praktyczna zasada tworzenia zapytania SQL na podstawie opisu czytelnego dla człowieka?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć kod ASCII dla danego znaku w MySQL?

  2. Docker Machine na Macu:Nie widzisz zamontowanych woluminów na hoście dockera/docker-machine? Gdzie są fizycznie przechowywane woluminy?

  3. Jak naprawić błąd „Wartość poza zakresem dostosowana do kolumny”?

  4. Jak obsłużyć zbyt wiele jednoczesnych połączeń nawet po wykorzystaniu puli połączeń?

  5. MySQL nie używa indeksów z klauzulą ​​WHERE IN?