SQL Tutorial Italiano 17 - Le JOIN spiegate INNER JOIN, LEFT JOIN e RIGHT JOIN

Поделиться
HTML-код
  • Опубликовано: 10 сен 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

Комментарии • 64

  • @mattiaforesta6861
    @mattiaforesta6861 Год назад +32

    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!

  • @francescoanastasio2021
    @francescoanastasio2021 Год назад +39

    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;

    • @massimilianogalastro4817
      @massimilianogalastro4817 Год назад +1

      Grazie mille!!

    • @Ale-qp7hf
      @Ale-qp7hf Год назад +1

      grazie mille

    • @geniusenzo
      @geniusenzo Год назад +1

      Grazie mille !
      Bene o male avevo risolto, ma mi restava il dubbio del sesto dipendente e del valore nullo. Tutto chiarito grazie a te !

    • @alexandro9781
      @alexandro9781 Год назад +3

      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.

  • @nicobill95
    @nicobill95 Год назад +1

    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ì!

  • @Petex7
    @Petex7 3 года назад +2

    Finalmente le ho capite! Spieghi molto bene!! Anche l’uso della voce è perfetto!

  • @r87bart
    @r87bart 3 года назад +4

    Tutto estremamente chiaro, come sempre. Grande Edoardo 🔝

  • @LORENZOPLACENTINO
    @LORENZOPLACENTINO 3 месяца назад

    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

  • @tommasodonnarumma7884
    @tommasodonnarumma7884 3 года назад +1

    Tutto chiaro, non è stato difficile da capire, "Bravo Ottima Spiegazione".

  • @marcocherubini874
    @marcocherubini874 3 года назад +2

    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 :)

    • @EdoardoMidali
      @EdoardoMidali  3 года назад +1

      Ti ringrazio tanto per i complimenti e ti auguro il meglio per il tuo percorso di studi.

  • @martabazzotti9727
    @martabazzotti9727 Год назад

    Si capisce alla grande!! Grazie mille è un ottimo video, appena in tempo per sostenere l'esame di informatica in maniera dignitosa 😂😂😂

  • @martacamma
    @martacamma 8 месяцев назад

    Tutto chiaro, grazie! Spiegazione che mi è servita molto, lo consiglio!

  • @giuseppeaddamo7371
    @giuseppeaddamo7371 2 года назад

    Capito al primo colpo, spiegato perfettamente soprattutto facendo riferimento al disegno degli "insiemi", ottimo lavoro. ^_^

  • @mauropepe8755
    @mauropepe8755 3 года назад

    grandissimo, spiegato da te sembra tutto un enorme fesseria, grazie davvero !

  • @TheAndryuman
    @TheAndryuman 2 года назад

    Quando ne ho fatta una personale ho detto "BAM!" :) Grazie Grandissimo!!! Complimenti!

  • @lindaa.4139
    @lindaa.4139 2 года назад

    Ormai salto le lezioni del mio corso per vederle direttamente da te! Tutto più chiaro e sintetico!!

    • @EdoardoMidali
      @EdoardoMidali  2 года назад

      grazie mille, un bellissimo complimento

  • @sashatulupov8643
    @sashatulupov8643 4 месяца назад

    Davvero bravissimo !!!

  • @simonea.4411
    @simonea.4411 3 года назад +1

    Spiegazione chiara, bravo.

  • @Lucoski77
    @Lucoski77 Год назад +2

    Come faccio a capire quale tabella rappresenta quella di sinistra o quella di destra?

  • @pijamadeveloper2251
    @pijamadeveloper2251 2 года назад

    assolutamente chiarissimo, grazie mille

    • @EdoardoMidali
      @EdoardoMidali  2 года назад

      ottimo, era la lezione più difficile del corso

  • @riccdago
    @riccdago 3 года назад

    Graxie. La leziome si è capita. Sei stato bravissimo come sempre

  • @darioniero2641
    @darioniero2641 2 года назад

    Ottimo! Tutto chiarissimo

  • @fabfab8650
    @fabfab8650 3 года назад +4

    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

    • @christianbonaccorsi9586
      @christianbonaccorsi9586 2 года назад

      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.

  • @subkyo
    @subkyo 3 года назад

    ottima spiegazione, grazie!

  • @andreamarzullo8313
    @andreamarzullo8313 6 месяцев назад

    Sei un ragazzo in gamba

  • @andreamontagnino7814
    @andreamontagnino7814 3 года назад

    Grazie mille!!

  • @mariarosariaavvisati369
    @mariarosariaavvisati369 2 года назад

    sei fortissimo!!!!!

  • @ivanagenovese7453
    @ivanagenovese7453 4 месяца назад

    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.

  • @R0b3
    @R0b3 2 года назад

    Clear enough!!!

  • @davidedecataldo2870
    @davidedecataldo2870 2 года назад +3

    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 :)

    • @miky9175
      @miky9175 Год назад +1

      io sto cercando di capire la stessa cosa che hai chiesto tu... alla fine come avevi risolto?

  • @Andreazappala
    @Andreazappala 8 месяцев назад

    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?

  • @DaniloArcopinto
    @DaniloArcopinto 2 года назад

    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.

  • @Lucoski77
    @Lucoski77 Год назад

    Se faccio FROM dipendenti LEFT JOIN uffici , è uguale a FROM uffici RIGHT JOIN dipendenti ?

  • @simonecodarin3368
    @simonecodarin3368 2 года назад

    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à :)

    • @EdoardoMidali
      @EdoardoMidali  2 года назад

      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.

  • @robertob6996
    @robertob6996 2 года назад

    Se facessi una
    left join uffici -> dipendenti, sarebbe avrei lo stesso risultato della
    right join dipendenti -> uffici
    ?

  • @niccolomarilli6464
    @niccolomarilli6464 2 года назад

    Bravissimo!!!

  • @stucas73
    @stucas73 Год назад

    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 -.-).

  • @yaserwest5522
    @yaserwest5522 2 года назад

    Ma se al posto delle join faccio delle query innestate?

  • @rosanna1237
    @rosanna1237 11 месяцев назад

    Come si colloca in questa classificazione il natural join?

  • @gabrielelorenzoni2576
    @gabrielelorenzoni2576 Год назад

    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...

  • @redilgiullare
    @redilgiullare 2 года назад

    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?

    • @EdoardoMidali
      @EdoardoMidali  2 года назад

      mi puoi scrivere la query per favore? il corso è di inizio anno e non ho più il db che avevo usato

    • @redilgiullare
      @redilgiullare 2 года назад

      @@EdoardoMidali grazie mille per la risposta. Avevo fatto un errore nel joint. Ora funziona tutto, grazie per quello che fai

  • @riccardo3942
    @riccardo3942 2 года назад

    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ì!

  • @pierdelduca4706
    @pierdelduca4706 2 года назад

    come si fa a capire qual'è la tabella di sinistra o di destra ?

    • @EdoardoMidali
      @EdoardoMidali  2 года назад

      la tabella di sinistra è la prima che prendi in considerazione.

  • @hv_94
    @hv_94 2 месяца назад

    potevamo farlo insieme edo

  • @lorenzoruta6897
    @lorenzoruta6897 10 месяцев назад

    fra vieni a farmi da professore il mio nn sa fare niente

  • @zenoradano8747
    @zenoradano8747 15 дней назад

    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