Pillole di MySQL – Aggiornare i dati da una tabella ad un’altra

| 25 aprile 2012 | 0 Comments

MySQL LogoA volte capita di dover fare un aggiornamento al volo di dati da una tabella ad un’altra in un database MySQL. Spesso si fa ricorso a pagine PHP costruite ad oc per fare questo passaggio, ma esiste un sistema molto più semplice ed indolore. Una semplice query SQL. Vi mostrerò, tramite un semplice ed esaustivo esempio, come aggiornare una tabella (magazzino) contenente i dati di alcuni libri fra cui la quantità disponibile e la data dell’ultimo controllo sulla disponibilità ed una seconda tabella (controllo) contenente la quantità di libri ancora disponibile e la data in cui sono stati contati. Le due tabelle sono unite dal codice ISBN contenuto in tutte e due.

La nostra tabella magazzino da aggiornare sarà la seguente:

update_mysql

Mentre la tabella con cui pareggiare i dati si chiamerà controllo e sarà la seguente:

update_mysql

Come potete notare i dati nella seconda tabella sono solo 3, questo significa che solamente 3 righe, nella tabella magazzino, verranno aggiornate, la quarta rimarrà invariata.

A questo punto la query MySQL da scrivere sarà la seguente:

UPDATE magazzino M, controllo C SET
M.quantita = C.quantita,
M.ultimo_controllo = C.data_controllo
WHERE M.codice_isbn = C.codice_isbn

Consiglio vivamente di usare gli aliases per i nomi delle tabelle, in modo da facilitarvi successivamente l’utilizzo del nome dei campi. Per chi non sapesse cosa sono gli aliases, essi non sono altro che dei nomignoli che vengono assegnati ad un particolare elemento della query come ad esempio un nome di colonna o una tabella e servono per ricordarsi più facilmente a cosa si fa riferimento e scrivere in maniera più compressa. Nell’esempio qui sopra M è l’alias di magazzino e C di controllo. Nella prima riga si specifica che si vuole fare un UPDATE e si assegnano gli aliases, nella seconda e nella terza si specificano quali sono i dati che vogliono essere cambiati con quali. A sinistra vanno quelli da cambiare ed a destra quelli con cui cambiarli. Come da esempio sopra, il campo quantita della tabella magazzino (M) con il campo quantita della tabella controllo (C) ed il campo ultimo_controllo della tabella magazzino (M) con il campo data_controllo della tabella controllo (C). Nell’ultima riga c’è il collegamento fra le due tabelle ovvero WHERE (dove) il campo codice_isbn della tabella magazzino (M) è uguale al codice_isbn della tabella controllo (C).

Il risultato sarà il seguente:

update_mysqlLa riga 2,3 e 4 sono state aggiornate, mentre la 1, non avendo corrispondenza, è stata lasciata invariata.

Buon lavoro! 😉

ATTENZIONE: prima di fare qualsiasi aggiornamento su un database, fare sempre una copia dei dati. Questo evita spiacevoli conseguenze in caso di malfunzionamenti o query scritte male o con errori di battitura. Fate sempre leprove su un database di test e, se funziona, lo riportate su quello di lavoro.

VN:F [1.9.22_1171]
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +2 (from 2 votes)
Pillole di MySQL - Aggiornare i dati da una tabella ad un'altra, 10.0 out of 10 based on 1 rating

Tags: , , , , ,

Category: Informatica

About the Author ()

Leave a Reply