Query Aggiornamento Copia ID

di il
15 risposte

Query Aggiornamento Copia ID

Salve,
ho la seguente situazione con 2 tabelle

tbl_Elenco                                tbl_Interventi
ID_Principale				ID_Interventi
CodiceSecondario			CodiceSecondario
						ID_Secondario
Ho la necessità di copiare l'"ID_Principale" presente nella tabella "tbl_Elenco", nell'"ID_Secondario" della tabella tbl_Interventi, tenendo conto che il "CodiceSecondario" è uguale

ho creato una "query di aggiornamento" ma non mi funziona, potreste indicarmi il problema di seguito il codice SQL ?

UPDATE tbl_Interventi INNER JOIN Tbl_Elenco ON tbl_Interventi.ID_Secondario = Tbl_Elenco.ID_Principale SET tbl_Interventi.ID_Secondario = [tbl_Elenco].[ID_Principale]
WHERE ((([Tbl_Elenco].[CodiceSecondario])=[tbl_Interventi].[CodiceSecondario]));
ho già fatto delle ricerche nel forum, e tale codice viene fuori anche dalle indicazioni lette.

15 Risposte

  • Re: Query Aggiornamento Copia ID

    Le due tabelle sono in relazione? Se sì, non serve ripetere il campo CodiceSecondario nella tabella figlia (suppongo tbl_Interventi).
  • Re: Query Aggiornamento Copia ID

    Le due tabelle saranno in relazione tra gli ID_Principale della tbl_Elenco ed ID_Secondario della tbl_Interventi, nel momento in cui popolo il campo.
    ho provato a relazionare i campi "CodiceSecondario" di entrambe le tabelle essendo identiche, ma la relazione risulta "non definita", all'esecuzione della Query mi da una lista di circa 75000 (il numero dei dati inseriti) ma vuota
  • Re: Query Aggiornamento Copia ID

    Io ho la sensazione che ci sia qualcosa di sbagliato concettualmente alla base, per cui non comprendo il senso dell'operazione che hai richiesto di fare.

    saxas ha scritto:


    Le due tabelle saranno in relazione tra gli ID_Principale della tbl_Elenco ed ID_Secondario della tbl_Interventi, nel momento in cui popolo il campo.
    Per me puoi farlo anche prima...a patto che ci sia un senso reale di relazione uno-a-molti.

    Per capirci meglio, che dati contengono queste due tabelle?
  • Re: Query Aggiornamento Copia ID

    Semplicemente ho dovuto ricreare un database e per evitare di esportare fare le dovute modifiche su excel e reimportare il tutto, vorrei sapere come bisogna fare per ripopolare un campo al di là che sia un id o meno.
    La domanda penso sia semplice, avendo un campo comune, c'è la possibilità di trasferire dati da una tabella ad un altra?
    In quanto con le varie prove che ho fatto non riesco in base alle mie poche conoscenze
  • Re: Query Aggiornamento Copia ID

    Ripeto a parole mie quello che vuoi fare:
    1. Hai una tbl_Elenco con 1000 record
    2. La tbl_Interventi è vuota e vuoi popolarla con i 1000 record che stanno in tbl_Elenco
    Giusto?
    Se sì, non va bene la query di aggiornamento, ti serve una "query di accodamento". Oppure un volgare copia/incolla delle due colonne da una tabella all'altra in visualizzazione foglio dati.
  • Re: Query Aggiornamento Copia ID

    Vorrei evitare di utilizzare il copia incolla,
    in allegato esempio, ho messo sia la query di aggiornamento che quella di accodamento,
    nella prima mi restituisce solo righe vuote, nella seconda mi dice che copierebbe 81 righe, ma poi mi da errore.
    nel db allegato, un ulteriore tabella del risultato desiderato

    grazie per la pazienza!!
  • Re: Query Aggiornamento Copia ID

    saxas ha scritto:


    tale codice viene fuori anche dalle indicazioni lette.
    Inizia a dare ai campi nomi "significativi". E' spiazzante vedere in tbl_Elenco ID_Principale e CodiceSecondario: ID_Principale andrebbe bene per tutte le tabelle, presumibilmente è una chiave primaria. Saranno anche nomi di fantasia per le prove o per il forum ma si poteva fare meglio.
    Per chi non ha voglia di scaricarsi il file
    
    tbl_Elenco
    ID_Principale	CodiceSecondario
           1            Alfa
           2            Bravo
           3            Charlie
           4            Delta
           5            Bravo
           6            Bravo
           7            Charlie
           8            Delta
           9            Delta
    tbl_Interventi
    ID_Interventi	CodiceSecondario	ID_Secondario
          1               Alfa
          2               Alfa
          3               Alfa
          4               Bravo
          5               Bravo
          6               Bravo
          7               Charlie
          8               Delta
          9               Delta
    
    tbl_Interventi_risultato_desiderato
    ID_Interventi	CodiceSecondario	ID_Secondario
          1               Alfa                1
          2               Alfa                1
          3               Alfa                1
          4               Bravo               2
          5               Bravo               2
          6               Bravo               2
          7               Charlie             3
          8               Delta               4
          9               Delta               4
    
    e qui si vedono i problemi.
    La struttura non è normalizzata. Solo Alfa in tbl_Elenco ha un solo ID_Principale, gli altri sono ripetuti. Per andare sul concreto: come si fa a capire in tbl_Elenco quale "Charlie" prendere? Ha due ID_principale: 3 e 7. Dall'esempio che hai fornito è probabile che tu risponda: "Deve prendere il primo" ma a mio avviso dovrebbe esserci una tabella (di dominio?) tipo questa
    tbl_qualcosa
    ID_Qualcosa DescrizioneQualcosa
           1            Alfa
           2            Bravo
           3            Charlie
           4            Delta
    
    in cui ovviamente ID_Qualcosa è chiave primaria.
    Devi creare una relazione molti a molti?
  • Re: Query Aggiornamento Copia ID

    È evidente che non riesco a farmi capire, non essendo un "tecnico" di Access,
    il Db di prova che ho inviato in allegato è solo uno stralcio, ed ho inserito quei nomi "non significativi" per "maggiore chiarezza", si vede che non è così,
    penso che un problema semplice sia diventando enorme,

    Probabilmente il file nelle varie prove con la query di accodamento si è modificato la tabella tbl_Elenco è questa
    tbl_Elenco
    ID_Principale	CodiceSecondario
           1            Alfa
           2            Bravo
           3            Charlie
           4            Delta
           
    e qui si vedono i problemi.
    La struttura non è normalizzata. Solo Alfa in tbl_Elenco ha un solo ID_Principale, gli altri sono ripetuti. Per andare sul concreto: come si fa a capire in tbl_Elenco quale "Charlie" prendere? Ha due ID_principale: 3 e 7. Dall'esempio che hai fornito è probabile che tu risponda: "Deve prendere il primo" ma a mio avviso dovrebbe esserci una tabella (di dominio?) tipo questa
    per rispondere alla tua perplessità, (supponevo di essere stato chiaro)
    il "Charlie" del "CampoSecondario" che ha come "ID_ Principale" il "3" in "tbl_Elenco", deve essere copiato il "3" in "ID_Secondario" della "tbl_Interventi" in tutte le righe con "Charlie" nel Campo "CampoSecondario"
    in "tbl_Interventi_risultato_desiderato" si dovrebbe evincere quanto descritto

    come ho già scritto precedentemente è una tabella che ho prelevato così com'è, e per "velocizzare" avevo creato il "CampoSecondario" in tbl_Elenco in quanto ci sono solo 33 righe nella tbl_Interventi ci sono 75000 righe, ed aggiungendo il campo pensavo si potesse ricreare l'ID che mi avrebbe permesso di procedere con tutte le altre tabelle (probabile pensiero Excel)

    potete chiudere il post risolvo in maniera spartana,
    procederò alla vecchia maniera su excel, con un bel "cerca.vert"
    grazie per l'aiuto
  • Re: Query Aggiornamento Copia ID

    saxas ha scritto:


    Probabilmente il file nelle varie prove con la query di accodamento si è modificato la tabella tbl_Elenco è questa
    tbl_Elenco
    ID_Principale	CodiceSecondario
           1            Alfa
           2            Bravo
           3            Charlie
           4            Delta
           
    Basta, questo è sufficiente.
    Nella tua prima query di update, quella pubblicata qui, non deve esserci la Where e il collegamento tra le due tabelle deve essere fatto per CodiceSecondario. Dall'interfaccia grafica di Access per le query (QBE) trascina solo il campo ID_Secondario
  • Re: Query Aggiornamento Copia ID

    Guarda che Phil ti ha già spiegato che non serve a nulla, oltre ad essere concettualmente sbagliato.

    Per fare quel che cerchi, ti è sufficiente impostare la relazione tra i due campi "CodiceSecondario" e poi tirare fuori i dati con una SELECT opportunamente strutturata.
    SELECT tbl_Interventi.ID_Interventi,
    	tbl_Interventi.CodiceSecondario,
    	tbl_Elenco.ID_Principale
    FROM tbl_Elenco
    INNER JOIN tbl_Interventi ON tbl_Elenco.CodiceSecondario = tbl_Interventi.CodiceSecondario;
    
  • Re: Query Aggiornamento Copia ID

    Ok,
    nella "tbl_Elenco" ho cambiato la chiave primaria ed impostando "CampoSecondario"
    collegato con relazione 1 a molti con il "CampoSecondario" della "tbl_Interventi"
    utilizzato il seguente codice SQL
    
    UPDATE tbl_Elenco INNER JOIN tbl_Interventi ON tbl_Elenco.CodiceSecondario = tbl_Interventi.CodiceSecondario SET tbl_Interventi.ID_Secondario = [tbl_Elenco]![ID_Principale];
    pare che la cosa funzioni, avrei preferito procedere senza cambiare la chiave primaria

    grazie per l'aiuto
  • Re: Query Aggiornamento Copia ID

    saxas ha scritto:


    nella "tbl_Elenco" ho cambiato la chiave primaria ed impostando "CampoSecondario"...avrei preferito procedere senza cambiare la chiave primaria
    Perché hai dovuto fare questa cosa? non serviva. Il join nella query potevi farlo lo stesso. C'è qualcosa che mi sfugge?
  • Re: Query Aggiornamento Copia ID

    Come avrai capito sono proprio alle prime armi, e purtroppo vado un pò a tentoni.
    Il codice che mi hai dato tu mi faceva visualizzare nella query il risultato sperato, ma non si aggiornava la tabella.
    Senza cambiare chiave primaria non mi creava una relazione uno a molti, ma mi diceva "non definita", facendo queste ulteriori prove ha dato il risultato sperato.
  • Re: Query Aggiornamento Copia ID

    saxas ha scritto:


    Come avrai capito sono proprio alle prime armi, e purtroppo vado un pò a tentoni.
    Eh... conosco bene quel sistema, specie quando sei convinto che per "togliere" il valore ad un campo devi fare una query di delete e non di update... evviva!!!! (ogni riferimento a quello che ho combinato è puramente casuale)
    Comunque, non voglio essere insistente oltre la ragionevolezza. Ho provato ancora e questa query
    UPDATE tbl_elenco INNER JOIN tbl_interventi 
    ON tbl_elenco.CodiceSecondario = tbl_interventi.CodiceSecondario 
    SET tbl_interventi.ID_Secondario = [tbl_elenco].[ID_Principale];
    non ha bisogno di alcuna chiave primaria. Quello che sicuramente devi fare è collegare i due campi "CodiceSecondario" in quanto in mancanza di chiavi ed indici Access non riesce a capire da solo come collegarle. Ma fatto questo fila liscio.
    Attenzione a non farti trarre in inganno dalla visualizzazione foglio dati: questa è una query di aggiornamento, il suo compito è modificare il contenuto di quello che già c'è, non di visualizzare qualcosa. Se passi dalla visualizzazione struttura al foglio dati vedrai solo ID_Secondario senza i codici che andrà a pescare da tbl_elenco.

    Con la consueta chiave primaria Senza chiavi primarie Pulsante da usare L'importante è aver risolto, comunque.
Devi accedere o registrarti per scrivere nel forum
15 risposte