SQL Tutorial Italiano 17 - Le JOIN spiegate INNER JOIN, LEFT JOIN e RIGHT JOIN
Вставка
- Опубліковано 16 вер 2024
- Diciassettesimo episodio del corso completo di sql. Oggi vediamo come possiamo connettere più tabelle insieme durante una ricerca per sfruttare la loro relazione attraverso i JOIN. Nello specifico andremo a parlare di INNER JOIN, LEFT JOIN e RIGHT JOIN.
🌐 ►Ti serve un hosting per mettere online il tuo sito?
bit.ly/3ViVqhm
📂 ► Organizza il tuo lavoro in maniera professionale:
bit.ly/3yvZJMg
💻 ►Documentazione della lezione
codegrind.it/d...
📚 ► Consigli per libri e postazione da lavoro:
amzn.to/3g0gSXZ
💰 ► Sostieni il canale con una donazione:
bit.ly/3CIHBjR
bit.ly/3EurJnh
💬 ►Social e Community
Gruppo Telegram: bit.ly/3MnRZ4X
Canale Telegram: bit.ly/3Vhrn9C
Discord: bit.ly/3rOR97L
Linkedin: bit.ly/3ExG7Lv
___________________________________________
corso sql,corso sql ita,corso sql italiano,sql tutorial ita,sql tutorial italiano,tutorial sql ita,tutorial sql italiano,sql server tutorial ita,sql developer tutorial ita,sql developer manuale italiano,introduzione sql,sql introduzione,lezione sql,sql lezioni,sql lezione,corso completo sql,installazione sql,sql installazione,installare sql,beekeeper studio tutorial ita,installare database mysql in locale,mysql installazione windows,installare mysql
Devo essere onesto, sei il primo italiano a spiegare la programmazione in maniera efficace e semplice, grazie a te non mi sto più guardando tutorial indiani(chi programma ha ben presente). Volevo solo ringraziarti per ciò che fai; parlo per me, ma i tuoi corsi mi hanno aiutato veramente tanto!
Non è da tutti ammettere i propri errori, grazie per averlo fatto e per il tempo messo a disposizione per questo corso. Sperando di fare cosa gradita agli altri come me che lo stanno seguendo, riporto qui sotto le query da far girare in modo da "ricostruire" le tabelle come indicato nel video. In questo modo non dovete farlo a mano, inserendo i vari uffici a mano, i dipendenti etc, ma vi basterà fare copia e incolla e premere run.
-- Cleaning up everything
DROP TABLE IF EXISTS dipendenti;
DROP TABLE IF EXISTS uffici;
-- Creating tables
CREATE TABLE uffici(
id_ufficio int not null auto_increment,
nome_ufficio varchar(255) not null default '',
PRIMARY KEY (id_ufficio)
);
CREATE TABLE dipendenti(
id_dipendente int not null auto_increment,
nome varchar(255) not null,
data_assunzione date not null default '2023-01-01',
stipendio decimal not null default 0,
telefono varchar(20) not null,
id_ufficio int,
PRIMARY KEY (id_dipendente),
FOREIGN KEY (id_ufficio) REFERENCES uffici(id_ufficio)
);
-- Populating uffici table
INSERT INTO uffici(nome_ufficio)
VALUES
('Amministrazione'),
('Servizio Clienti'),
('Risorse Umane'),
('Vendite')
;
-- Populating dipendenti table
INSERT INTO dipendenti(nome, data_assunzione, stipendio, telefono, id_ufficio)
VALUES
('Luca Rossi', '2018-02-22', 1500, '2499586100', 1),
('Marco verdi', '2018-05-30', 1300, '0085834210', 2),
('Anna Neri', '2019-07-13', 1700, '294410834', 2),
('Antonio Mari', '2019-08-01', 1400, '9854339500', 4),
('Maria Monti', '2020-11-23', 1350, '5892033098', 4),
('Leonardo Valli', '2020-12-11', 1250, '0092884712', NULL)
;
-- Showing up tables, for convenience
SELECT * FROM uffici;
SELECT * FROM dipendenti;
Grazie mille!!
grazie mille
Grazie mille !
Bene o male avevo risolto, ma mi restava il dubbio del sesto dipendente e del valore nullo. Tutto chiarito grazie a te !
Anche se non mi servirà perché sono passato di qui solo per curiosità, ti ringrazio per l'altruismo del gesto per chi ha potuto trovare utile questo messaggio.
Ciao Edo, ti seguo ormai da mesi ma non ho mai commentato un tuo video. Ho iniziato un corso come Java Developer (primissima volta che mi approccio alla programmazione) e avevo una buona infarinatura di Java Base proprio grazie ai tuoi corsi. Abbiamo appena finito Java base e stiamo utilizzando MySQL per poterlo collegare alla futura parte di Java Avanzato che inizieremo a breve e non potevo non seguire anche questo tuo corso! Dunque volevo approfittarne per ringraziarti tantissimo del lavoro che hai fatto e che stai facendo, perchè grazie ai tuoi video sto capendo tante cose implementandole a quelle che sto imparando..i tutor sono bravi, ma mai quanto te. Sei una bravissima persona, soprattutto nel momento in cui ti sei accorto di non aver portato il giusto esempio, questo ti ha portato ad essere anche un ottimo insegnante (ti reputavo già così da Java ahah). Java è stato difficile e lo sarà sempre di più, SQL è più semplice ma sicuramente bisogna farci molta più attenzione , ma grazie ai tuoi video sto migliorando piano piano la mia logica e mentalità da sviluppatore. Detto questo, ancora grazie e continua così!
Tutto estremamente chiaro, come sempre. Grande Edoardo 🔝
Finalmente le ho capite! Spieghi molto bene!! Anche l’uso della voce è perfetto!
grazie mille! 😊
Ciao Edoardo, sto studiando Financial Risk and Data Analysis all'Università per diventare Data Analyst. Integrare il percorso universitario con questo tuo corso (il primo che seguo sul tuo canale), non solo è semplice ma addirittura divertente. Veramente COMPLIMENTI e grazie per quello che fai.
Al termine del corso farò una buona donazione per il sostenimento del canale.
Continua così, sei un grande :)
Ti ringrazio tanto per i complimenti e ti auguro il meglio per il tuo percorso di studi.
Tutto chiaro, non è stato difficile da capire, "Bravo Ottima Spiegazione".
Capito al primo colpo, spiegato perfettamente soprattutto facendo riferimento al disegno degli "insiemi", ottimo lavoro. ^_^
grandissimo, spiegato da te sembra tutto un enorme fesseria, grazie davvero !
Si capisce alla grande!! Grazie mille è un ottimo video, appena in tempo per sostenere l'esame di informatica in maniera dignitosa 😂😂😂
Tutto chiaro, grazie! Spiegazione che mi è servita molto, lo consiglio!
Spiegazione chiara, bravo.
Quando ne ho fatta una personale ho detto "BAM!" :) Grazie Grandissimo!!! Complimenti!
ahhhahahah
Davvero bravissimo !!!
Ormai salto le lezioni del mio corso per vederle direttamente da te! Tutto più chiaro e sintetico!!
grazie mille, un bellissimo complimento
se domani alla verifica di informatica vado decentemente grazie ai tuoi video mi abbono al canale ,per adesso però sto capendo tutto quindi grazie comunque
domani mi fai sapere
Graxie. La leziome si è capita. Sei stato bravissimo come sempre
yey!
Come faccio a capire quale tabella rappresenta quella di sinistra o quella di destra?
Ottimo! Tutto chiarissimo
assolutamente chiarissimo, grazie mille
ottimo, era la lezione più difficile del corso
ottima spiegazione, grazie!
sarebbe possibile vedere il codice relativo alla gestione della relazione fra le tabelle DIPENDENTI e UFFICI. hai fatto una modifica alla struttura ma non hai fatto vedere nulla di ciò che hai fatto. il resto è molto chiaro ma se non si mette a posto la relazione come si fa a seguirti? grazie
Devi ricreare la tabella dipendenti e la tabella uffici assegnando la primary key (id) nella table dipendenti, e foreign key (id_ufficio) references dipendenti (id) nella tabella uffici. Poi segui il codice di questa lezione per le Join.
sei fortissimo!!!!!
ti ringrazio 😎
Grazie mille!!
Ciao Edoardo, arrivati a questo punto ho un dubbio. Il campo "id_ufficio" nella tabella "dipendenti" come fa a prendere l'id del campo "id_ufficio" presente nella tabella "ufficio"? So che hai fatto una "foreign key", ma vorrei capire nell'atto pratico. Lo hai inserito tu manualmente, quando hai popolato la tabella? Al momento non è una cosa automatica, corretto?
Grazie mille :)
io sto cercando di capire la stessa cosa che hai chiesto tu... alla fine come avevi risolto?
Sei un ragazzo in gamba
Tutto molto chiaro e perfetto, l'unica mia indecisione c'è l'ho ancora sulla FOREINGN KEY e quello che la riguarda, non riesco a capirla molto bene come e dove usarla.
Per esempio per quanto riguarda queste due nuove tabelle io ho messo
{
PRIMARY KEY (id_dipendente),
FOREIGN KEY (id_ufficio) REFERENCES uffici(id_uffici)
}
nella prima tabella mentre nella seconda ho messo solo la PRIMARY KEY all'ID diciamo
Il tutto funziona esattamente come funziona a te, ma non so se va bene comunque o se la FOREIGN KEY sarebbe dovuta andare nella tabella uffici.
grazie in anticipo per chi mi risponderà :)
le chiavi esterne giocano un ruolo importante come limite quando modifichiamo o eliminiamo una tabella. Se definiamo una chiave esterna su una colonna di una tabella, ma poi cerchiamo di cancellarla noterai che il database ti da errore.
Serve più che altro per integrità e sicurezza del database; potresti fare join ecc.. senza definire mezza chiave esterna.
Le tue spiegazioni sono molto chiare e semplici da ripetere, purtroppo non riesco a far funzionare il DELETE FROM... WHERE.... e non capisco dove sia l'errore. La query è scritta correttamente ma in realtà non effettua alcuna rimozione.
Ciao Edoardo, si possono mettere più condizioni in una Inner Join, ad esempio Inner Join tabella on campo1=campo2 e campo3=campo4, non riesco a capire il modo corretto di scriverlo.
Se facessi una
left join uffici -> dipendenti, sarebbe avrei lo stesso risultato della
right join dipendenti -> uffici
?
Clear enough!!!
ho capito bene come funzionano le join ma anche avendo visto alter table non riesco a scrivere sintatticamente una query che possa collegare gli ID_uffico agli id_dipendenti , un esempio che ho scritto è ALTER TABLE dipendenti ADD id_ufficio FOREIGN KEY ( id_dipendente ) REFERENCES uffici (id_ufficio) ma non funziona qualcuno sa spiegarmi come potrei farlo senza dover andare a ricreare tutte le tabelle da 0 e metterle in relazione sin da subito?
Se faccio FROM dipendenti LEFT JOIN uffici , è uguale a FROM uffici RIGHT JOIN dipendenti ?
Ciao Edoardo, grazie per i tuoi video, sei molto chiaro e preparato. Volevo chiederti se fosse possibile rinominare le query una volta che sono già state salvate; se fosse possibile aggiungere qualche strumento di debug su Beekeper (quando ci sono errori di sintassi non mi sembra molto esplicativo). Grazie! Continua così!
non si può rinominare o aggiungere debug
Pycharm, se programmi Python, ha un debug fatto meglio.
Come si colloca in questa classificazione il natural join?
Grazie mille. faccio una domanda da neofita, se dopo un join io voglio vedere solo i dipendenti di un solo ufficio il where denominazione like 'ufficio' non funziona. dove sbaglio?
mi puoi scrivere la query per favore? il corso è di inizio anno e non ho più il db che avevo usato
@@EdoardoMidali grazie mille per la risposta. Avevo fatto un errore nel joint. Ora funziona tutto, grazie per quello che fai
Bravissimo!!!
Niente di complicatissimo, ho fatto prima ad utilizzare le funzioni presenti su Beekeeper per creare e popolare la nuova tabella!! (ancora non ricordo bene la sintassi del comando... ed ovviamente NON ho salvato le query -.-).
Ma se al posto delle join faccio delle query innestate?
sto seguendo il corso ma non mi installa localhost
17:09:37 [main] Initializing Modules
17:09:37 [Apache] Problem detected!
17:09:37 [Apache] Port 80 in use by "Unable to open process" with PID 4!
17:09:37 [Apache] Apache WILL NOT start without the configured ports free!
17:09:37 [Apache] You need to uninstall/disable/reconfigure the blocking application
17:09:37 [Apache] or reconfigure Apache and the Control Panel to listen on a different port
17:09:37 [main] Starting Check-Timer
17:09:37 [main] Control Panel Ready
ho cercato di capire ma non ne vengo fuori...
come si fa a capire qual'è la tabella di sinistra o di destra ?
la tabella di sinistra è la prima che prendi in considerazione.
potevamo farlo insieme edo
fra vieni a farmi da professore il mio nn sa fare niente
ciao, se dovessi invece cercare l'ufficio in cui è collocato luca rossi potrei usare la sintassi
SELECT dipendenti.id_dipendenti, dipendenti.nome, uffici.nome_ufficio
FROM dipendenti
INNER JOIN uffici ON dipendenti.id_ufficio=uffici.id_ufficio
WHERE id_dipendente=1
ho aggiunto un where per esplicitare l'id di luca rossi, ho fatto bene? non posso installare xxamp perchè il miowindows non lo supporta, grazie e scusa il disturbo