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ò? :wallbash:

inviato 10 anni fa
Nando
X 0 X

potresti realizzare un script che estrae tutte le righe di anagrafica prelevando id (ID1), nome e cognome. Per ciascuna riga lo script effettuerà una ricerca in ass_palermo in modo da identificare l'id (ID2) associato al nome e cognome estratti da anagrafica. Fatto ciò avrai scoperto l'ID2 associato all'ID1, potrai quindi cambiare ID2 con ID1 nelle tabelle ass_palermo e prest_palermo.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

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

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.

risposto 10 anni fa
Nando
modificato 10 anni fa
X 0 X

non ho esperienza con l'SQL di access  :dunno:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Beh, sql di access o sql di mysql non cambia nulla, il linguaggio è sempre lo stesso.

risposto 10 anni fa
Nando
X 0 X
Beh, sql di access o sql di mysql non cambia nulla, il linguaggio è sempre lo stesso.

Non al 100%. Comunque, prova così:

UPDATE
   anagrafica
      INNER JOIN
   ass_palermo
      ON anagrafica.nominativo = ass_palermo.nominativo
      INNER JOIN
   prest_palermo
      ON ass_palermo.id_assistito = prest_palermo.id_assistito
   SET
      ass_palermo.id_assistito = anagrafica.id_anagrafica,
      prest_palermo.id_assistito = anagrafica.id_anagrafica

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda