TOP

Lezione SQL 10. Unione di tabelle (INNER JOIN)

La caratteristica più potente del linguaggio SQL è la possibilità di combinare diverse tabelle nella RAM del DBMS durante l'esecuzione delle query. I join vengono molto spesso utilizzati per l'analisi dei dati. Di norma, i dati si trovano in tabelle diverse, il che consente loro di essere archiviati in modo più efficiente (poiché le informazioni non vengono duplicate), semplifica l'elaborazione dei dati e consente di ridimensionare il database (è possibile aggiungere nuove tabelle con informazioni aggiuntive) .

Le tabelle del database utilizzate nel DBMS MS Access sono tabelle relazionali, ovvero tutte le tabelle possono essere collegate tra loro tramite campi comuni.


1. Creare una combinazione di tabelle (JOINS)

Combinare le tabelle è una procedura molto semplice. È necessario specificare tutte le tabelle che verranno incluse nell'insieme e “spiegare” al DBMS come saranno correlate tra loro. La connessione viene effettuata utilizzando la parola WHERE, ad esempio:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers, Sumproduct 
WHERE Sellers.City = Sumproduct.City

Combinando le due tabelle, siamo stati in grado di vedere quali prodotti vende ciascun venditore. Diamo un'occhiata più da vicino al codice di richiesta, poiché è leggermente diverso da una normale richiesta. L'istruzione SELECT inizia specificando le colonne che vogliamo visualizzare, ma questi campi sono in tabelle diverse, la clausola FROM contiene due tabelle che vogliamo unire nell'istruzione SELECT, le tabelle vengono unite utilizzando la parola WHERE, che specifica le colonne unirsi. È necessario specificare il nome completo del campo (Table.Field), poiché il campo City è presente in entrambe le tabelle.

2. Combinazione interna (INNER JOIN)

Nell'esempio precedente abbiamo utilizzato la parola WHERE per combinare le tabelle, che esegue un controllo in base all'equivalenza di due tabelle. Una combinazione di questo tipo è anche chiamata "combinazione interna". Esiste anche un altro modo di combinare le tabelle che indica chiaramente il tipo di combinazione. Considera il seguente esempio:

Run SQLSELECT DISTINCT Seller_name, Product 
FROM Sellers 
INNER JOIN Sumproduct 
ON Sellers.City = Sumproduct.City

In questa query, invece di WHERE, abbiamo utilizzato la costruzione INNER JOIN ... ON ..., che ha dato un risultato simile. Anche se la combinazione con la clausola WHERE è più breve, è comunque meglio usare INNER JOIN perché è più flessibile, come verrà spiegato più dettagliatamente nelle sezioni seguenti.