Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114

    [MySQL] Update con sostituzione valori

    Ciao, ho cercato nelle precedenti discussioni, ma non ho trovato nulla (così come in rete in generale), più che altro penso per la difficoltà a richiedere ai motori di ricerca il problema.

    Ho il seguente problema: devo aggiornare il campo di una tabella con la corrispettiva chiave presente in un'altra tabella.

    In pratica ho due tabelle P e C, all'interno di P è presente il campo (per esempio) 'nome', mentre in C ho il campo 'titolo' e il campo 'id'. Devo rimpiazzare il campo P.nome con C.id quando P.nome = C.titolo

    Sicuramente la query è molto più semplice di come l'ho elaborata io:

    codice:
    update P set nome = (select id from C where titolo = nome) where nome = (select titolo from C where titolo = nome)
    come posso risolvere il problema senza andarmi a modificare a mano l'intera (sterminata) tabella P??

    grazie

  2. #2
    Ciao,
    cerca su Google "mysql update with join" e per il tuo caso dovrebbe essere così:

    UPDATE P
    INNER JOIN C
    ON P.nome = C.titolo
    SET P.nome = C.id;

    l'unico problema è che probabilmente non lo farà eseguire perchè utilizzi lo stesso campo sia nella sezione update, sia nella sezione join

    Prova e fammi sapere

    Ciao
    Mik

  3. #3
    in effetti converrebbe aggiungere e aggiornare una nuova colonna nella tabella "P"

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    114
    Originariamente inviato da Holidaysoft.it
    UPDATE P
    INNER JOIN C
    ON P.nome = C.titolo
    SET P.nome = C.id;
    direi che pare abbia funzionato alla perfezione... grazie mille davvero!!

  5. #5

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.