Corso MySQL – JOIN delle tabelle

mysql-logo

Fino ad ora, in questo corso MySQL, abbiamo usato le SELECT per recuperare i dati da una sola tabella. Un RDBMS è chiamato relazionale (la R iniziale) perché consente di avere più tabelle in relazione tra loro. La relazione tra le tabelle può avvenire solo se esistono delle colonne che contengono dei dati di correlazione. A questo punto è possibile fare una SELECT che prende i dati da due o più tabelle che vengono logicamente unite (JOIN) tra loro attraverso le colonne di correlazione.

Nel nostro esempio abbiamo due tabelle dati_dipendente e dati_personali. La tabella dati_dipendente contiene un identificativo del dipendente che è un numero unico.

Abbiamo poi la tabella dati_personali che contiene un identificativo del dipendente d_id pensato in modo che si riferisca all’identificativo dip_id della tabella dati_dipendente.

Il campo dip_id della tabella dati_dipendente e il campo d_id della tabella dati_personali sono i campi di correlazione tra le due tabelle che ci permettono di unirle tramite una JOIN. Vediamolo con un esempio pratico.

Facciamo una JOIN (unione) tra le due tabelle in modo da estrarre dalla tabella dati_dipendente il nome del dipendente e dalla tabella dati_personali il nome del coniuge (per i dipendenti che sono sposati):

La clausola FROM prende i nomi delle due tabelle da cui ci proponiamo di estrarre i dati. Inoltre, si precisa che i dati devono essere recuperati solo per quelle voci dove il emp_id e e_id sono uguali.

I nomi delle colonne nelle due tabelle sono unici. Nella SELECT non esiste possibilità di confusione per quale sia la colonna da cui prendere i dati. Tuttavia questo non può essere sempre vero, spesso incontreremo colonne con lo stesso nome in tabelle differenti.

Quando questo accade, nella nostra SELECT, possiamo indicare in maniera esplicita il nome della colonna e il nome della tabella a cui appartiene, scrivendole insieme separate da un punto.

Per fare un esempio riscriviamo la SELECT precedente con la notazione estesa:

Tags:

About the Author

Post a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Top