Inserimento numero progressivo per databse di grandi dimensioni

di il
4 risposte

Inserimento numero progressivo per databse di grandi dimensioni

Ciao a tutti, è la prima volta che scrivo su questo sito.
In questi giorni il mio capo mi ha fatto trasferire un database con a seguito svariati calcoli sviluppato con excel su access.
Sono riuscita a completare quasi tutto il lavoro, ma mi trovo in grossa difficoltà con un punto iniziale che ho dato per scontato, ma ad ora non riesco più ad automatizzare. Mi spiego meglio, la prima query effettua un'estrazione da un database. I dati che ne escono sono campi di vari tipi che seguono l'ordinamento che gli ho imposto attraverso raggruppamenti. Non essendoci un campo che possa rendere ogni record univoco sono partita inizialmente creando da questa prima query una tabella ESTRAZIONE e a seguito sono andata a modificare la tabella introducendo un campo ID_Prog con numerazione automatica. I calcoli del resto del lavoro si basano su questo campo numerico progressivo che identifica ogni singolo record. Ora il mio capo mi ha detto che dovrei automatizzare anche l'inserimento del numero progressivo. Se avessi un database con dimensioni ridotte non avrei problemi, infatti ho provato ad usare il codice di seguito per aggiungerlo
SELECT (Select Count(*) FROM Tab1 as Temp Where Temp.ID <= [Tab1].ID) AS ID_Prog
FROM Tab1
IL risultato è quello che vorrei, ma il database è di 18mila record e per completare l'esecuzione ci mette quasi 2 ore, cosa inaccettabile.
Ho quindi pensato ad uno "stratagemma", ma non so se è possibile: creare una tabella con un campo ID_Prog con numerazione progressiva ad esempio da 1 a 50mila e "affiancare" questa tabella alla mia già esistente ESTRAZIONE. Questa è un'idea, ma non riesco a realizzarla, con operazioni di UNION non esce il risultato desiderato e non so se è la strada corretta, vi chiedo se potete aiutarmi o consigliarmi!!

4 Risposte

  • Re: Inserimento numero progressivo per databse di grandi dimensioni

    1. Fai attenzione perché la "tabella" di Excel, così piena di calcoli come l'hai descritta tu, non trova medesimo riscontro in una TABELLA di Access. In Access le tabelle sono solo contenitori PRIMORDIALI di dati, cioè quelli che solo l'utente digita. I calcoli non vanno eseguiti in tabella, ma delegati alle query.
    2. Riguardo il campo ID a numerazione automatica...non ho capito tutto il discorso. Hai detto che lo hai introdotto e non ci sono problemi. Poi però parli di altro...che non capisco.

    Cerca di risolvere innanzitutto il punto 1.
  • Re: Inserimento numero progressivo per databse di grandi dimensioni

    Premesso che un DB con 18mila records è un piccolissimo database... quindi non può mettere in crisi un sistema.
    Detto questo non capisco bene lo scenario, nè quanto tu abbia come basi sui Database e questo potrebbe fare la differenza.

    Ad esempio dici:

    Ranarulla ha scritto:


    Non essendoci un campo che possa rendere ogni record univoco sono partita inizialmente ...
    Access in realtà ti offre un Campo di tipo AutoIncrementale chiamato Counter che ad ogni inserimento automaticamernte incrementa di 1...
    Questo richiede che tu abbia in qualche modo strutturato una Tabella Ospite, e tutto viene in automatico.

    Le SubQuery in Access sono poco efficienti, ma anche quì occorre capire come hai impostato i Campi, quelli su cui si operano azioni di Ricerca o Aggregazione devono essere Indicizzati...
    Tu non fornisci alcun elemento tecnico che ci consenta di comprendere come ti sei mosso, sicchè perdonerai se si mette in dubbio una adeguata impostazione iniziale.
  • Re: Inserimento numero progressivo per databse di grandi dimensioni

    Cerco di spiegarmi meglio, ho una query che estrare dei dati da un database aziendale. Nei campi di questa query non esiste un campo univoco. Vorrei mantenere l’ordine dell’estrazione e introdurre un numero progressivo per identificare i record.
    In partenza avevo trasferito i dati della query in una tabella e da lì inserivo un nuovo campo ID con numerazione automatica, ma ora vorrei automatizzare questo passaggio.
    Ho provato a crearmi un numero univoco crescente (ma non progressivo) per ogni record combinando i dati dei record come DATA, ID_IMPIEGATO, TIPO_LAVORO, questo per mantenere l’ordine dell’estrazione di partenza e ottenere la base per poter applicare il codice riportato sopra e ottenere il numero progressivo, ma quando eseguo la query impiega troppo tempo.
    Ora vorrei capire se è possibile:
    1)creare una tabella ospite con tutti i campi della mia query, più un campo ID COUNTER che sarà il mio numero progressivo
    2)inserire i dati dalla query alla tabella creata con ID
    Il problema è che quando provo a fare questa operazione mi da errore perché la mia query ha un campo in meno rispetto alla tabella creata (gli manca il campo ID)
  • Re: Inserimento numero progressivo per databse di grandi dimensioni

    Ciao a tutti,
    scusate ho risolto!! Forse avevo toccato qualcosa e non mi funzionava l'INSERT INTO, ma ho replicato quanto sopra ad ha funzionato.
    Ho creato una tabella ospite con tutti i campi e con il campo ID numerazione automatica, con il codice INSERT INTO ho trasferito i dati dalla query alla tabella.

    Grazie per l’idea!!
Devi accedere o registrarti per scrivere nel forum
4 risposte