Relazioni tra tabelle utilizzando un campo calcolato

di il
11 risposte

Relazioni tra tabelle utilizzando un campo calcolato

Buongiorno

Mi sembra che non sia possibile farlo ma vorrei avere conferma che non è possibile creare una relazione tra una tabella con un'altra utilizzando un campo calcolato della prima tabella.

La mia tabella di partenza è importata ed il campo ID (identificazione record) è creato successivamente all'importazione tramite una query.

Se invece della query potessi generare il campo ID direttamente nella tabella importata potrei metterla in relazione con altre tabelle che attualmente sono legate alla query e non alla tabella di partenza.

Se la soluzione non è praticabile avete dei suggerimenti per trovare una via alternativa?

Grazie

Francesco

11 Risposte

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    22/12/2025 - fcaliandro ha scritto:

    La mia tabella di partenza è importata ed il campo ID (identificazione record) è creato successivamente all'importazione tramite una query.

    In che senso?

    Come crei l'id? E questo id in che modo lo relazioni?

    Mostra dei dati fittizi di cosa importi e con cosa lo devi relazionare.

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    22/12/2025 - fcaliandro ha scritto:

    Se invece della query potessi generare il campo ID direttamente nella tabella importata potrei metterla in relazione con altre tabelle che attualmente sono legate alla query e non alla tabella di partenza.

    Crei una tabella con id autoincrement e importi i dati o riversi in una tabella i risultati della query e successivamente relazioni la nuova tabella.

    Ma come stabilisci le relazioni? È master? Detail? Boh! Mancano dati per le miriadi di soluzioni.

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    Concordo con sihsandrea. Fornisci nomi propri di tabelle, campi. Poi spiega dettagliatamente cosa vuoi realizzare usando i nomi propri.

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    La tabella di partenza ha 120 colonne , 500.000 righe

    Colonna1: PO NUMBER (tipo short text, duplicati ammessi)

    Colonna2: PO POS (integer, duplicati ammessi)

    Colonne3-120: altri dati.

    Il singolo record da identificare con codice parlante concatenando PO NUMBER e PO POS.

    PO_LINEITEM = PO_NUMBER & "_" & PO POS

    Poi tutto il DB ha altre tabelle di dati registrati utilizzando PO_LINEITEM.

    Non ho mai utilizzato una relazione in quanto PO_LINEITEM è creato in una query.

    Non ho sfruttato i vantaggi dell'integrità referenziale.

    Molti dati sono stati registrati da me in altre tabelle utilizzando il PO_LINEITEM.

    Adesso ci sto pensando... 

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    22/12/2025 - fcaliandro ha scritto:

    La tabella di partenza ha 120 colonne , 500.000 righe

    da dove proviene? è un file xls?

    invece di creare una query "select", crea una query "insert" dove come id metti 

    PO_LINEITEM = PO_NUMBER & "_" & PO POS

    facendo attenzione ai duplicati.

    22/12/2025 - fcaliandro ha scritto:

    Colonna1: PO NUMBER (tipo short text, duplicati ammessi)

    Colonna2: PO POS (integer, duplicati ammessi)

    mossa poco furba (prova a creare una chiave composta)

    PO NUMBER tipo testo???

    magari prelevi i dati da tabella origine e li riversi su tabella destinazione con id autoinc e campo PO_LINEITEM combinato da PO_NUMBER & "_" & PO POS

    se non devi scrivere dati su questa tabella puoi lasciarla come query. se poi devi scrivere o modificare qualcosa crei una update where campi=condizioni... sulla tabella di partenza e rilanci la select   ( inutile sovraccaricare il db).

    penso non siano dati statici se hai sempre il problema della tabella di partenza.

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    @Sihsandrea,

    e si: si tratta di dati che cambiano quotidianamente, che io importo nel mio db.

    Il campo PO NUMBER nasce alfanumerico di partenza per cui sono obbligato a gestirlo come short text.

    Perchè una tabella invece di una query?

    A sensazione: Perchè posso migliorare la gestione dei dati che vengono ad essere legati meglio tra di loro con delle relazioni più forti.

    Non so se c'è qualcosa in rete a proposito. Mi piacerebbe approfondire.

    Grazie, ciao

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    22/12/2025 - fcaliandro ha scritto:

    Perchè una tabella invece di una query?

    A sensazione: Perchè posso migliorare la gestione dei dati che vengono ad essere legati meglio tra di loro con delle relazioni più forti.

    Quando prendi i dati con una tabella, anche se non te ne accorgi, il db crea una query semplicissima 

    Select * from tabella

    Una query!

    Quello che identifichi come tabella, quando la costruisci, è il modo in cui memorizzi i dati.

    Ecco perché puoi relazionare la query.

    Quello che le altre query più complesse non fanno è avere una chiave, un indice ecc... Perché non serve ai fini di visualizzazione.

    Le query più articolate non ti permettono di inserire o modificare i dati la la semplice select * from tabella si . Ci sono query con le quali puoi manipolare i dati e query che non possono perché vengono fuori da joint complesse e che andrebbero a modificare le tabelle coinvolte.

    Continua con la query che risparmi spazio sul db.

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    22/12/2025 - fcaliandro ha scritto:

    La tabella di partenza ha 120 colonne , 500.000 righe

    Colonna1: PO NUMBER (tipo short text, duplicati ammessi)

    Colonna2: PO POS (integer, duplicati ammessi)

    Colonne3-120: altri dati.

    Una tabella con tutti quei campi?
    Di cosa parla il tuo database?
    Nutro un forte sospetto di progettazione non normalizzata.

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    22/12/2025 - OsvaldoLaviosa ha scritto:

    Una tabella con tutti quei campi?
    Di cosa parla il tuo database?
    Nutro un forte sospetto di progettazione non normalizzata.

    A naso sembra l'export di una query con joint a sviluppo orizzontale...

    Dovrebbe farsi inviare un xml

    P.s. sempre a naso, dato l'indizio

    Colonna1: PO NUMBER (tipo short text, duplicati ammessi)
    Colonna2: PO POS (integer, duplicati ammessi)

    E il.post delle telefonate con access, credo che copi qualche elenco in xls o dal database delle chiamate...

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    E già..

    Importo un excel generato per chi non ha accesso al vero e proprio data base (Oracle). Per cui colonne a iosa e chi si e visto si è visto... E' per questo che utilizzo Access. Non sono un programmatore. Solo un utilizzatore che ha trovato molto utile questo Forum per scoprire le funzioni di Access.

    Le colonne che non mi servono le elimino con una query.

    Funziona.

    Andrea se puoi scrivimi sull'altro tread per le telefonate.

    grazie

    Francesco

  • Re: Relazioni tra tabelle utilizzando un campo calcolato

    Ma ti direi che se funziona, lascialo così com'è...

    Hai spremuto tutto quello che c'era da spremere. Il prossimo tempo dedicalo per imparare un linguaggio diverso.

Devi accedere o registrarti per scrivere nel forum
11 risposte