Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да намеря връзки между таблици, които са свързани с дълги разстояния? MySQL

Таблици представляват бизнес отношения/сдружения. "Relation[ship]s", които споменавате, са FK (външни ключове) и които не са необходими за заявка. Те заявяват, че стойностите на подреда за някои колони трябва също да бъдат стойности на подреда за някои ключови колони. Това, което е необходимо, е да знаете какво казва един ред за текущата бизнес ситуация, когато е в таблица. (Което, като се има предвид какви ситуации възникват, определя FKs и други ограничения.)

От Изисква се за присъединяване на 2 таблици с техните FK в 3-та маса :

Така дадено

-- 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, ....)

пишем

    ps_product s
JOIN ...
ON s.id_product = ...
...
JOIN ps_carrier c
ON ... = id_carrier
WHERE ...

за да получите редове, където

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

Трябва да знаете предикатите на вашите таблици, след което условията JOIN заедно на таблиците ON или WHERE, така че полученият предикат да е за редовете, които искате обратно.

Има ли някакво практическо правило за конструиране на SQL заявка от четливо от човека описание?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql е мъртъв, но подсистемата е заключена

  2. Golang, mysql:Грешка 1040:Твърде много връзки

  3. Извличане на последната вмъкната идентификационна форма на съхранената процедура в MySQL

  4. Как да направите резервно копие на една таблица в MySQL база данни?

  5. ORDER BY равна стойност в MySQL