JOIN SQL
Lezione 22 / 33

Di Leo Sorge
SQL sql
Per unire più tabelle, dato che ne abbiamo solo ‘oggetti’, ne serve una seconda. Eccola: la chiameremo ‘fornitori’.
CREATE TABLE fornitori (id integer PRIMARY KEY AUTO_INCREMENT, marca varchar(50), distributore varchar(2), provenienza varchar(50), percentuale DECIMAL(5,2));
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('DJI', 'sì', 'Olanda', 30.32);
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('Oculus', 'sì', 'Gran Bretagna', 25.00);
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('Google', 'no', 'USA', 35.10);
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('Ultimaker', 'no', 'Olanda', 38.00);
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('Shining3D', 'no', 'Cina', 30.00);
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('Trotec', 'no', 'Austria', 32.08);
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('Apple', 'sì', 'Irlanda', 20.00);
INSERT INTO fornitori (marca, distributore, provenienza, percentuale) VALUES ('Specialized', 'no', 'United States', 33.33);
SELECT * FROM fornitori;
Osserva che per sapere se acquistiamo da un distributore o direttamente dal produttore abbiamo usato una variabile di tipo testo, distributore, che contiene un sì o un no. In SQL esiste una variabile a due stati, detta BIT, ma questa non sempre viene correttamente interpretata dai sistemi più semplici. Ecco perché in questo caso abbiampreferito usare un’altra variabile testo.
Osserva anche che gli Stati Uniti sono indicati in due modi diversi, USA per Google e United States per Specialized. Si tratta di una delle cause più frequenti di cattivi risultati da database: quando scriverai software per i tuoi clienti dovrai spiegar loro che esistono buone pratiche per evitare questo ed altri errori.
Adesso abbiamo due tabelle, "oggetti" e "fornitori". Possiamo combinare le informazioni in un'unica tabella, ad esempio in base al fornitore.
Per fare ciò si usa l'operatore JOIN.
SELECT oggetti.*, fornitori.* FROM oggetti INNER JOIN fornitori ON oggetti.marca = fornitori.marca;
La query restituisce un'unica tabella con tutte le righe delle due tabelle combinate.
In questo esempio, l'operatore JOIN viene utilizzato per combinare le righe delle tabelle "oggetti" e "fornitori" in base all'ID del fornitore. La clausola "ON" specifica la condizione di join, ovvero che il valore nella colonna "fornitore_id" della tabella "oggetti" deve corrispondere all'ID del fornitore nella colonna "id" della tabella "fornitori".
La query restituisce tutte le colonne di entrambe le tabelle per le righe che soddisfano la condizione di JOIN. Si noti che, se ci sono righe nella tabella "oggetti" che non hanno un corrispondente nella tabella "fornitori", queste righe non saranno incluse nella query risultante.
Precedente
21 UNION SQLSuccessivo
23 Aggiungere e modific..Le nostre guide possono essere molto utili per muovere i primi passi nel mondo della programmazione, ma se vuoi iniziare una nuova carriera in ambito digital & tech con il supporto costante dei docenti e tantissime esercitazioni pratiche, ti consigliamo di frequentare uno dei corsi della nostra Hackademy!
Scopri i corsi