sql >> Database >  >> RDS >> Mysql

Hoe vind ik relaties tussen tabellen die verband houden met lange afstanden? MySQL

Tafels vertegenwoordigen zakelijke relaties/verenigingen. De "relation[ship]s" die u noemt zijn FK's (buitenlandse sleutels), en die zijn niet nodig voor het opvragen. Ze stellen dat subrijwaarden voor sommige kolommen ook subrijwaarden moeten zijn voor sommige sleutelkolommen. Wat nodig is, is te weten wat een rij zegt over de huidige bedrijfssituatie wanneer deze in een tabel staat. (Die, gegeven de situaties die zich voordoen, de FK's en andere beperkingen bepalen.)

Van Vereist om 2 tafels samen te voegen met hun FK's in een 3e tafel :

Dus gegeven

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

wij schrijven

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

om rijen te krijgen waar

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

U moet de predikaten van uw tabellen kennen en vervolgens de tabellen AAN of WHERE-voorwaarden samenvoegen, zodat het resulterende predikaat voor de rijen is die u terug wilt.

Is er een vuistregel om een ​​SQL-query samen te stellen op basis van een voor mensen leesbare beschrijving?




  1. KIES * WAAR NIET BESTAAT

  2. PLSQL-codeprestaties afstemmen of testen in Oracle D2k-formulieren

  3. De grootte van een database controleren in MySQL

  4. Overlappende beperking voor datums na gres