IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

di il
17 risposte

IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

Salve, ho un problema con pg admin 4 con post gre sql

OBIETTIVO : importare la colonna country id dalla tabella countries region nella tabella warnings , mantenendo la stessa corrispondenza della colonna country name 

.

PROBLEMA: scrivendo il codice della foto 02 visibile qui https://drive.google.com/drive/folders/1N0weDUnfI_9eynwix9mLuORIrvc5r7zh?usp=sharing , nella tabella warnings, visibile sempre al link sopra, viene importata una colonna con tutti valori nulli, non riesco a capire come mai

.

Qualcuno puo aiutarmi? grazie

17 Risposte

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    Ma è un esercizio?

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    27/06/2023 - oregon ha scritto:


    Ma è un esercizio?

    no è un problema che non riesco a risolvere

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    27/06/2023 - googlesheetitalia ha scritto:


    27/06/2023 - oregon ha scritto:


    Ma è un esercizio?

    no è un problema che non riesco a risolvere

    Quindi è un esercizio di un problema che non riesci a risolvere ;))

    Giusto ?


    Comunque trattasi di esercizio e secondo me devi studiare meglio e di più ;)) perchè ci sono almeno due errori da penna Blue (non Rossa) 
    qui siamo proprio alle basi di sql e se non si conoscono queste penso che sei molto lontano come approccio.
    A tal fine avere e/o trovare una soluzione da altri non ti giova, ripeto … qui siamo proprio alle basi delle basi.

    Questo non prenderla come una cattiveria, ma solo un consiglio, anche se non richiesto, che può farti rendere conto di studiarti meglio e di più argomenti come le strutture tabelle, le stringhe sql, etc etc etc etc etc….

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    27/06/2023 - By65Franco ha scritto:


    27/06/2023 - googlesheetitalia ha scritto:


    27/06/2023 - oregon ha scritto:


    Ma è un esercizio?

    no è un problema che non riesco a risolvere

    Quindi è un esercizio di un problema che non riesci a risolvere ;))

    Giusto ?


    Comunque trattasi di esercizio e secondo me devi studiare meglio e di più ;)) perchè ci sono almeno due errori da penna Blue (non Rossa) 
    qui siamo proprio alle basi di sql e se non si conoscono queste penso che sei molto lontano come approccio.
    A tal fine avere e/o trovare una soluzione da altri non ti giova, ripeto … qui siamo proprio alle basi delle basi.

    Questo non prenderla come una cattiveria, ma solo un consiglio, anche se non richiesto, che può farti rendere conto di studiarti meglio e di più argomenti come le strutture tabelle, le stringhe sql, etc etc etc etc etc….

    ti ringrazio per i tuoi consigli

    mi sai consigliare qualche sito o piattaforma dove colmare queste lacune che menzioni? 

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    28/06/2023 - googlesheetitalia ha scritto:


    mi sai consigliare qualche sito o piattaforma dove colmare queste lacune che menzioni? 

    Visto che usi postgresql poi fare riferimento a questa abbondante guida, dove trovi esempi e spiegazioni che per chi è agli inizi e non solo, è molto utile e semplice da seguire.
    Non farti spaventare dal numero infinite di pagine ;)

    https://www.postgresql.org/docs/

    In merito al tuo quesito cerca per le tabelle il tipo di dati che puoi e che devi utilizzare in taluni casi secondo i valori che devono contenere…. in merito alla stringa sql cerca come devono essere passati le variabili secondo il tipo, sia quando esegui le join, where condition, set, values. etc etc… 

    Se ti studi bene questa parte, vedrai che il 99% dei problemi li risolvi in un'istante. 

    Quindi sempre in merito al tuo quesito, valuta attentamente quali tipi di variabili (campi/colonne) da utilizzare sulla base del loro contenuto.

    ;)) se un campo Id è numero Int non lo puoi trattare come  un VARCHAR etc.etc.etc….

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    Ti ringrazio, anche se alcune cose che hai scritto non mi risultano

    il campo country id contiene solo lettere, che senso avrebbe metterlo come int?

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    28/06/2023 - googlesheetitalia ha scritto:


    Ti ringrazio, anche se alcune cose che hai scritto non mi risultano

    il campo country id contiene solo lettere, che senso avrebbe metterlo come int?

    O più semplicemente perchè chiamarlo Id ?

    mmmmm… ogni tabella che si rispetti in un database relazionale deve avere un integrità che si garantisce definendo un Id di tipo contatore che si chiama Chiave Primaria.

    Poi si possono avere altre chiavi (non primarie) univoche oppure no. Di tipo carattere, numerico, data, etc…

    Poi si possono avere degli indici che si costruiscono sulla base delle chiavi dette sopra.

    Tutte le relazioni che si realizzano tra le varie tabelle sono garantite dall' Id chiave primaria . Le tabelle una volta referenziate tramite la chiave primaria saranno sempre relazionate e volendo a “catena”.

    Quando il nome di un campo è rappresentato dalla Clausola “Id”, ci si aspetta che faccia riferimento ad una chiave primaria e come tale sarà di tipo numerico.
    Denominare un campo di tipo char con "Id" non è una buona cosa da fare.

    Domanda: ma le tue tabelle hanno una chiave primaria ?

    Ad ogni modo nella documentazione che ti ho allegato sopra, questi concetti li trovi tutti e spiegati meglio di come possa fare io qui nel forum.


  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    Ascolta una cosa… mi fai questo test per favore ?
    (controlla i nomi delle tabelle e dei campi se l'ho scritti bene)

    UPDATE warnings, countries_regions
    SET warnings.country_id = countries_region.country_id
    WHERE warnings.country_name = countries_regions.country_name 

    Anche se preferirei una cosa così con la join tra le tabelle:

    UPDATE warnings 
    INNER JOIN countries_regions ON warnings.country_name = countries_regions.country_name
    SET warnings.country_id = countries_region.country_id;

    Fai sapere ;))

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    UPDATE warnings, countries_regions
    SET warnings.country_id = countries_region.country_id
    WHERE warnings.country_name = countries_regions.country_name 
    
    con questo codice mi dava un errore di sintassi in riga 1 sulla virgola
    
    UPDATE warnings1
    JOIN countries_regions ON warnings1.country_name = countries_regions.country_name
    SET warnings1.country_id = countries_regions.country_id;
    
    con il codice qui sopra invece mi da un errore di sintassi presso join riga 2 non so perche, grazie	
  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    28/06/2023 - googlesheetitalia ha scritto:


    UPDATE warnings1
    JOIN countries_regions ON warnings1.country_name = countries_regions.country_name
    SET warnings1.country_id = countries_regions.country_id;
    
    con il codice qui sopra invece mi da un errore di sintassi presso join riga 2 non so perche, grazie	

    INNER JOIN non JOIN 

    UPDATE warnings1
    INNER JOIN countries_regions ON warnings1.country_name = countries_regions.country_name
    SET warnings1.country_id = countries_regions.country_id;
  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    Ad ogni modo con WHERE condition la sintassi corretta sarà:

    UPDATE table1
    SET table1.column1 = table2.column1
    FROM table2
    WHERE table1.column2 = table2.column2;

    Dove:

    - aggiorna column1 di table1 
    - con il valore di column1 di table2
    - quando column2 di table1 è = a column2 di table2


    Se con la WHERE o con INNER JOIN non ti aggiorna i dati della colonna vuol dire che esistono o errori di sintassi oppure vincoli che non ti permettono di aggiornare tale campo (per esempio se esistono relazioni, campi referenziati, indici o chiavi che vanno in coflitto, etc…).

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    https://drive.google.com/file/d/1GdRUr5kbR6afsTxuUHtuyeEGhnRCyVxd/view?usp=sharing

    questa la foto dell'errore

    ho provato anche con inner join ma non va

    sto impazzendo, grazie

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    28/06/2023 - googlesheetitalia ha scritto:


    https://drive.google.com/file/d/1GdRUr5kbR6afsTxuUHtuyeEGhnRCyVxd/view?usp=sharing

    questa la foto dell'errore

    ho provato anche con inner join ma non va

    sto impazzendo, grazie

    Il messaggio ti dice che manca una colonna che si vuole aggiornare, verifica la sintassi se è corretta.


    Ad ogni modo fai una cosa semplicissima:

    • crea due tabelle nuove svincolate da tutto il resto 
    • inserisci tre o quattro records

    Esempio:

    Tabella1

    Colonna1Colonna2
    PaperinoPaperopoli
    QuiPaperopoli
    QuoPaperopoli
    QuaPaperopoli

    Tabella2

    Colonna1Colonna2
    Paperino 
    Qui 
    Quo 
    Qua 
    Esequi l'SQL:
    
    UPDATE Tabella2
    SET Tabella2.Colonna2 = Tabella1.Colonna2
    FROM Tabella1
    WHERE Tabella2.Colonna1 = Tabella1.Colonna1;

    Quindi a SQL abbiamo detto di fare :
    - Aggiorna Tabella2 
    - Imposta il  campo Colonna2 di Tabella 2 = Colonna2 di Tabella1
    - Quando il campo di Colonna1 di Tabella2 = Colonna1 di Tabella1

    Vedrai che ti funziona l'aggiornamento 

    A questo punto elimina il contenuto di Colonna2 di Tabella2 ed esegui SQL con la INEER JOIN:

    UPDATE Tabella2
    INNER JOIN Tabella1 ON Tabella2.Colonna1 = Tabella1.Colonna1
    SET Tabella2.Colonna2 = Tabella1.Colonna2;

    Quindi a SQL abbiamo detto di fare :
    - Aggiorna Tabella2
    - Unisci Tabella2 con Tabella1 per i records dove i campi di Colonna1 delle due tabelle sono uguali
    - Imposta il  campo Colonna2 di Tabella 2 = Colonna2 di Tabella1

    e anche in questo caso deve funzionare.

  • Re: IMPORTARE COLONNA DA UNA TABELLA AD UN ALTRA

    29/06/2023 - By65Franco ha scritto: CIAO FRANCO, SCUSA SE TI RISPONDO SOLO ORA, PROVO SUBITO E TI DICO SE FUNZIONA


    28/06/2023 - googlesheetitalia ha scritto:


    https://drive.google.com/file/d/1GdRUr5kbR6afsTxuUHtuyeEGhnRCyVxd/view?usp=sharing

    questa la foto dell'errore

    ho provato anche con inner join ma non va

    sto impazzendo, grazie

    Il messaggio ti dice che manca una colonna che si vuole aggiornare, verifica la sintassi se è corretta.


    Ad ogni modo fai una cosa semplicissima:

    • crea due tabelle nuove svincolate da tutto il resto 
    • inserisci tre o quattro records

    Esempio:

    Tabella1

    Colonna1Colonna2
    PaperinoPaperopoli
    QuiPaperopoli
    QuoPaperopoli
    QuaPaperopoli

    Tabella2

    Colonna1Colonna2
    Paperino 
    Qui 
    Quo 
    Qua 
    Esequi l'SQL:
    
    UPDATE Tabella2
    SET Tabella2.Colonna2 = Tabella1.Colonna2
    FROM Tabella1
    WHERE Tabella2.Colonna1 = Tabella1.Colonna1;

    Quindi a SQL abbiamo detto di fare :
    - Aggiorna Tabella2 
    - Imposta il  campo Colonna2 di Tabella 2 = Colonna2 di Tabella1
    - Quando il campo di Colonna1 di Tabella2 = Colonna1 di Tabella1

    Vedrai che ti funziona l'aggiornamento 

    A questo punto elimina il contenuto di Colonna2 di Tabella2 ed esegui SQL con la INEER JOIN:

    UPDATE Tabella2
    INNER JOIN Tabella1 ON Tabella2.Colonna1 = Tabella1.Colonna1
    SET Tabella2.Colonna2 = Tabella1.Colonna2;

    Quindi a SQL abbiamo detto di fare :
    - Aggiorna Tabella2
    - Unisci Tabella2 con Tabella1 per i records dove i campi di Colonna1 delle due tabelle sono uguali
    - Imposta il  campo Colonna2 di Tabella 2 = Colonna2 di Tabella1

    e anche in questo caso deve funzionare.

    29/06/2023 - By65Franco ha scritto:


    Linea orizzontale

Devi accedere o registrarti per scrivere nel forum
17 risposte