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

    Modificare un id con l'id di altra tabella

    Ho un problema con delle tabelle che prima risiedevano su due db diversi
    e non avevano nessuna correlazione fra di loro, ognuno funzionava per i
    fatti propri, adesso devo invece unificarli sotto un unico db e in qui tutto ok,
    il problema nasce per due tabelle che hanno alcuni dati in comune ma con id
    diverso tra loro e bisogna farli diventare simili per ogni record.



    NOME TABELLA | NOME CAMPO
    -----------------------------------------------
    ass_palermo | nominativo (varchar)
    prest_palermo | id_assistito (int)
    anagrafica | id_anagrafica (int)


    la tabella prest_palermo non ha nominativo, è collegata alla tabella ass_palermo
    attraverso la chiave id_assistito;


    il Sig. Mario Rossi nella tabella "ass_palermo" e "prest_palermo" ha id_assistito: 10;
    il Sig. Mario Rossi nella tabella "anagrafica" ha id_assistito: 23;

    il problema è il seguente, l'id_assistito della tabella "prest_palermo"
    deve diventare lo stesso della tabella anagrafica, ovvero id_assistito 23.


    Si protrebbe fare un operazione singola per ogni record, ma purtroppo parliamo
    di migliaia di record, parlo di migliaia perché le tabelle prest sono 5 quindi,
    una per ogni città in cui l'azienda ha sede, quindi, non è possibile agire in
    modo manuale.
    Esiste un modo veloce in sql o con l'aiuto di php che permetta di fare ciò?

    Grazie,
    ciao.

  2. #2
    Aiutandomi con access ho realizzato questa stringa SQL, ma a quanto pare non funziona, assegna a tutti lo stesso id

    codice:
    UPDATE prest_palermo, ass_palermo INNER JOIN anagrafica ON ass_palermo.nominativo = anagrafica.nominativo_assistito SET prest_palermo.id_assistito = anagrafica.id_anagrafica;
    non capisco dove sia l'errore.

  3. #3
    se la tabella da modificare non ha relazioni se non con l'id che deve essere modificato... mi sa che non ci sia santo.
    la tabella prest_palermo non ha nominativo, è collegata alla tabella ass_palermo
    attraverso la chiave id_assistito;
    ma poi dici:
    il Sig. Mario Rossi nella tabella "ass_palermo" e "prest_palermo" ha id_assistito: 10;
    il Sig. Mario Rossi nella tabella "anagrafica" ha id_assistito: 23;

    il problema è il seguente, l'id_assistito della tabella "prest_palermo"
    deve diventare lo stesso della tabella anagrafica, ovvero id_assistito 23.
    domanda: ma se gli id sono diversi (10 da una parte e 23 dall'altra) come si relazionano attualmente? c'e' un errore nelle tue indicazioni? oppure gia' non c'era la corretta relazione.

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

  4. #4
    Praticamente l'anagrafica è di un db e ass_palermo e t_prest_palermo sono di un altro db, adesso la ditta che ha fatto la richiesta vuole il tutto unificato in un unico db, ecco dove è il problema, db diversi con id diversi.

  5. #5
    Originariamente inviato da Bartjsp
    Praticamente l'anagrafica è di un db e ass_palermo e t_prest_palermo sono di un altro db, adesso la ditta che ha fatto la richiesta vuole il tutto unificato in un unico db, ecco dove è il problema, db diversi con id diversi.
    non hai risposto alle mie obiezioni di prima.

    poi, se non hai un campo di riferimento con la tabella anagrafica come puoi cambiare i valori di prest_palermo?

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

  6. #6
    Originariamente inviato da piero.mac
    domanda: ma se gli id sono diversi (10 da una parte e 23 dall'altra) come si relazionano attualmente? c'e' un errore nelle tue indicazioni? oppure gia' non c'era la corretta relazione.
    Non c'è nessun errore, fin dal principio non c'era relazione fra loro perché le tabelle si trovavano su db diversi e funzionavano ognuno per i fatti propri, adesso invece devo unificare il tutto sotto un unico db ed abolire la tabella ass_palermo e collegare quella t_prest_palermo ad anagrafica.

  7. #7
    Originariamente inviato da Bartjsp
    Non c'è nessun errore, fin dal principio non c'era relazione fra loro perché le tabelle si trovavano su db diversi e funzionavano ognuno per i fatti propri, adesso invece devo unificare il tutto sotto un unico db ed abolire la tabella ass_palermo e collegare quella t_prest_palermo ad anagrafica.
    allora il database e' inconsistente. se la relazione tra tabelle e' errata non vedo soluzione automatizzata.

    Vediamo se riesco a spiegarmi. Se hai due db dove trovi: (lascio perdere i nomi reali che creerebbero solo degli sciolingua....)

    db1.tabella.id = db1.anagrafica.id
    db2.tabella.id = db2.anagrafica.id

    ci deve essere un qualcosa che sia uguale tra loro, per esempio

    db1.anagrafica.nome = db2.anagrafica.nome

    allora potresti fare

    set db1.tabella.id = db2.anagrafica.id
    where db1.anagrafica.nome = db2.anagrafica.nome

    in questo modo aggiorni l'id basandoti sui nomi delle due anagrafiche equivalenti prendendo l'id del database 2.

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

  8. #8
    Il tuo raggionamento non fa un piegha, e tutto corretto quello che dici, ma purtroppo i db sono stati così strutturati fin dall'inizio, è una lunga storia da spiegare, ma non sto qui a farti perdere tempo.
    Ho già risolto con l'aiuto di excel, certo è lavoraccio ma non ho altre soluzioni.

    Grazie tantissimo lo stesso per il tempo che mi hai dedicato.


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.