Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

UPDATE simultaneo di due o più tabelle

Articolo scritto da Max Bossi

Mediante il comando UPDATE abbiamo la possibilità di agire su record già esistenti, modificandoli.
Poniamo ad esempio di avere, all'interno del nostro DB, una tabella numeri_di_telefono così strutturata:

e poniamo che la ns. tabella sia già popolata di 3 record:

nome telefono
Mario Rossi 123.456789
Antonio Bianchi 987.654321
Claudio Verdi 321.654987

Ora poniamo che il sig. Mario Rossi si sia trasferito e, pertanto, abbia cambiato numero di telefono. Per aggiornare la nostra agenda telefonica dovremo utilizzare una query del genere:
UPDATE
numeri_di_telefono
SET
telefono = '213.698547'
WHERE
nome = 'Mario Rossi'
Fin qui niente di nuovo.
Supponiamo ora di avere anche un'altra tabella chiamata indirizzi così strutturata: Poniamo poi che questa tabella sia già popolata di 3 record corrispondenti agli indirizzi dei tre amici già presenti nell'altra tabella:

nome via cita prov
Mario Rossi via roma 11 Torino TO
Antonio Bianchi via garibaldi 2 Gallarate VA
Claudio Verdi piazza cavour 4 Como CO

Finita questa lunga premessa veniamo al quesito che da il titolo a questo articolo: come è possibile aggiornare le due tabelle simultaneamente, cioè utilizzando una sola query anzichè due?
Semplice, utilizzando una JOIN in fase di UPDATE!

Tornando all'esempio di prima potremmo utilizzare una query del genere:

UPDATE
numeri_di_telefono
INNER JOIN
indirizzi
ON
numeri_di_telefono.nome = indirizzi.nome
SET
numeri_di_telefono.telefono = '213.698547',
indirizzi.via = 'piazza delle repubblica 5',
indirizzi.citta = 'Milano',
indirizzi.prov = 'MI'
WHERE
numeri_di_telefono.nome = 'Mario Rossi'
Dopo aver eseguito la query di UPDATE verifichiamo effettuando due distinte SELECT sulle due tabelle. Ecco i rispettivi risultati (evidenziati in giallo):

1) tabella numeri_di_telefono

SELECT * FROM numeri_di_telefono
nome telefono
Mario Rossi 213.698547
Antonio Bianchi 987.654321
Claudio Verdi 321.654987

1) tabella indirizzi
SELECT * FROM indirizzi
nome via cita prov
Mario Rossi piazza delle repubblica 5 Milano MI
Antonio Bianchi via garibaldi 2 Gallarate VA
Claudio Verdi piazza cavour 4 Como CO

Il vantaggio pratico di una tecnica di aggiornamento di più tabelle, tra loro relazionate, mediante JOIN è quello di ridurre il carico di lavoro del server sulla base di un semplice principio: "una query è meglio di due".

Corsi
Corso MS AccessCorso MS Access
Impara a creare e gestire database in maniera semplice e veloce. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso SQL e DatabaseCorso SQL e Database
Creazione e gestione di database relazionali. A partire da 39 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122