..


Sponzorované odkazy

Odstrániť tieto tabuľky pomocou JOIN

Článok napísal Max Bossi

V tomto krátkom článku si ukážeme, ako je možné, aby sa otázky k odstráneniu (DELETE) využívanie potenciálu spojenia, tj vytváranie vzťahov medzi tabuľkami v MySQL.
V skutočnosti sme už videli, ako používať zapojiť sa do výberu dát (SELECT) a sú aktualizované (UPDATE), tu sa vzťahuje len to, čo už naučili.

Lepšie poznať potenciál tejto techniky by mala zvážiť, ako náš zvyk prijať konkrétny prípad použitia.

Povedzme, že musíme pracovať na databáze hypotetické skladu sa skladá z nasledujúcich tabuliek (ktoré si popíšeme ich konštrukcií):

  • police
    • id (int)
    • Popis (varchar)
  • police
    • id (int)
    • scaffale_id (int)
    • Popis (varchar)
  • produkty
    • id (int)
    • ripiano_id (int)
    • Názov (varchar)
    • Cena (float)
Teraz predpokladajme, že máte potrebné odstrániť produkty. My zamerať na tieto tri rôzne výsledky.

1) Predpokladajme, že chcete odstrániť jeden výrobok, ktorý poznáte ID. V tomto prípade stačí spustiť triviálne otázku:

 



 DELETE * FROM produkty WHERE id = 1;

 
2) rovnaký dotaz bude použitá, ak chcete odstrániť všetky výrobky balené do danej police:
 



 DELETE * FROM produktov Pokiaľ ripiano_id = 1;

 
3) Ale ak chcete odstrániť všetky produkty v danej police?
Jednoduchý dotaz taký ako tí videný skôr by nebolo možné, pretože v "výrobky", nie je pole, ktoré odkazuje na polici!

V skutočnosti problém nie je neprekonateľný! s trochou obratnosti pri manipulácii s otázkami, v skutočnosti je prekážkou jednoducho obísť! Ako? sa pridať! Tu je príklad:

 



 DELETE produkty .*







 Z produktov INNER JOIN police







 ON = prodotti.ripiano_id ripiani.id







 KDE ripiani.scaffale_id = 1;



Pritom sme si vytvorili vzťah medzi "produkty" dva stoly a "police" (založený na poli JOIN "ripiano_id" Tabuľka, ktorá zodpovedá prvej identifikátor druhej), s cieľom využiť pole "scaffale_id" tohto " posledný.

Na prvý pohľad sa možno môže zdať trochu zložitejšie ... je vlastne celkom jednoduchá. Ide o to, vytvoriť logický vzťah medzi dvoma tabuľkami, aby bolo možné používať informácie k prevádzke prvý druhého.

V prípade, okrem výrobkov, sme chceli odstrániť všetky police police zodpovedajúce danému pututo používame trochu iný dotaz:

 



 DELETE produktov .*, regály .*







 Z produktov INNER JOIN police







 ON = prodotti.ripiano_id ripiani.id







 KDE ripiani.scaffale_id = 1;



V podstate sa jedná o otázku zobraziť iba nad jediným rozdielom je, že zrušenie bude mať vplyv nielen na pole v tabuľke "produkty":
 



 výrobky .*

 
ale aj tí tabuľka "police":
 



 police .*

 
V prípade otázok či požiadaviek by som Vás pozvať na príspevok na naše fórum .

V rovnakej kategórii ...
E-Learning
MS Access (Advanced) MS Access (Advanced)
Naučte sa vytvárať a spravovať databázy jednoducho a rýchlo. Od 29 €.
MySQL (kurz) MySQL (kurz)
Správa open-source databázy. Od 39 €.
SQL a databáz (kurz) SQL a databáz (kurz)
Vytváranie a správa relačnej databázy. Od 39 €.
Sponzorované odkazy