Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [SQL] Aggiornare un campo in base a un'altra tabella

    Ciao a tutti!

    Inizialmente avevo una tabella "varie" mySQL con diversi campi, uno dei quali era "nome" di tipo stringa.
    Ora ho creato un'altra tabella "nomi" nella quale ogni record è identificato univocamente da un campo "id". Anche "nomi" contiene un campo "nome".
    Vorrei ora aggiornare la vecchia tabella varie in modo da contenere al posto della stringa del nome, l'id relativo. Ho provato questa query ma viene segnalato un errore di sintassi:

    UPDATE varie SET varie.nome = (SELECT id FROM nomi WHERE nomi.nome=varie.nome)

    Qualcuno potrebbe aiutarmi a trovarne una adeguata allo scopo?

    Grazie!

  2. #2
    Forse non servira', ma per sicurezza io aggiungerei una colonna id alla tabella varie (varie.id) con le stesse caratteristiche (tipo e dim) della colonna nome.id e poi farei:

    codice:
    UPDATE varie, nomi
    SET varie.id = nome.id
    WHERE nomi.nome = varie.nome
    poi controlli se e' tutto ok e quindi cancellerai la colonna varie.nome

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ciao e grazie della risposta.
    Il tuo metodo funziona, ma possibile che non si possa fare con una query diretta?
    Sarebbe molto più pulito

  4. #4
    Originariamente inviato da fabbio86
    Ciao e grazie della risposta.
    Il tuo metodo funziona, ma possibile che non si possa fare con una query diretta?
    Sarebbe molto più pulito
    quella e' una query diretta e con ciambella di salvataggio allegata.

    Non sempre le strade "molto piu' pulite" sono anche le strade migliori e piu veloci.

    Tieni presente che quello che fai non e' da considerare di ordinaria amministrazione, ma un evento una tantum che serve a correggere un database. Dopo che hai allineato le due tabelle dovrai ottimizzarle (sicuramente non lo sono) e adeguare le istruzioni sql alla nuova realta'.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ok, mi hai convinto. Resterà sempre la curiosità intellettuale ma ora tutto funziona

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.