Normalizzazione di una Tabella da una query

di Anonimizzato23890 il
14 risposte
Buongiorno, ho una query con i seguenti campi:
[Matricola] (che è la chiave primaria; [codice competenze 1]; [importo competenze 1];[codice competenze 2]; [importo competenze 2]; [codice competenze 3]; [importo competenze 3];............
ed una tabella [codice competenze]; [descrizione competenze].

ora dovrei portare i dati della query in una tabella cosi composta [matricola];[codice competenze]; [importo competenze],

in modo da creare un query che mi colleghi i CODICI con le Descrizioni, ed eventualmente filtrarle per valore e matricola.

ho provato a fare una query di accodamento con i campi [matricola];[codice competenze 1]; [importo competenze 1] e funziona, ma se aggiungo anche i campi [codice competenze 2]; [importo competenze 2]. mi dice "destinazione di output 'Codice competenze' duplicati."
come posso evitare questo problema?
l' unica soluzione che mi è venuta in mente è di fare "n" query di accodamento quanti sono di codici ma questo significa farne un centinaio, qualche idea non troppo complicata?

grazie

14 Risposte

  • Non ho capito molto...
    Vediamo la struttura di queste tabelle?
  • Queste sono la query e la tabella
    Allegati:
    23890_5b121440370d8c5075a4179fb9177233.jpg
    23890_5b121440370d8c5075a4179fb9177233.jpg

    23890_6d2578c68165b446681752477b7c6535.jpg
    23890_6d2578c68165b446681752477b7c6535.jpg
  • Ok, adesso mostra il risultato che vuoi ottenere...
  • Il risultato é la tabella che ho inserito, al momento l ho fatta con 2 query di accodamento
  • Senza vedere la tabella sorgente è impossibile.
  • Per eternityck: sebbene esiste in Access uno strumento "quasi" automatico che mirerebbe alla normalizzazione delle tabelle, la normalizzazione è un discorso progettuale che devi mettere in atto innanzitutto tu soltanto quando hai le idee chiare sul database. Ma lo devi fare prima.
    Ho la forte sensazione che tu non abbia compreso il senso della "normalizzazione".
  • Allora scusatemi mi sono spiegato male ricomincio:
    io ho la query "1 competenze IRF"
    query.JPG
    query.JPG

    dove ho determinati valori

    ho fatto 2 query di accodamento "query competenze 1" e "query competenze 2"
    querycompetenze2.JPG
    querycompetenze2.JPG

    per arrivare alla tabella "competenze" che mi serve per fare un ulteriore query in modo da filtrare i dati =0 collegare le descrizioni della tabella "voci cedolini" mettere nel report solo le voci realtive a quella matricola se >0; etc.

    Ora l' unica soluzione che ho trovato è fare tot "query competenze..." per quanti sono i codici, che sono un bel pò.

    Ci sarebbe una soluzione più veloce?

    Grazie
  • Ti ho già scritto, e ribadisco, che senza la tabella sorgente è impossibile.
    La TUA query non serve a nulla.
  • Allora questo è il listino che importo da un file txt che ricevo
    listino.JPG
    listino.JPG

    da qui prendo i dati per far fare alla query dei calcoli
  • Eh si mi serve un data base per gestire più di 400 operai tra stagionali e non
  • Ti serve prima tutta la teoria e pratica necessaria alla gestione dei db, non é come imparare ad avvitare una vite. Non ci si arriva da zero.
  • Visto che parti da una situazione non normalizzata, per giungere ad una normalizzata, puoi traslare i vari campi (delle competenze) da una situazione orizzontale ad una in verticale.

    Se conosci le varie casistiche, puoi impiegare una query di unione (utilizzando lo statement UNION in SQL):
    http://www.blueclaw-db.com/download/union_query_advanced.htm
    http://www.informit.com/articles/article.aspx?p=2755707&seqNum=4
    https://stackoverflow.com/questions/20227458/converting-column-names-to-use-as-row-fields-in-access

    Qualora si abbia necessità di un sistema più versatile (in grado di esaminare le varie competenze presenti, correlate con i codici di riferimento) si impiega del linguaggio VBA in modo da ciclare fra i field presenti ed aggiunga ad una nuova tabella
    i dati interessati. Qui di seguito trovi qualche spunto per partire:
    https://stackoverflow.com/questions/24373454/loops-through-access-table-and-for-each-column-with-data
    https://bytes.com/topic/access/answers/190118-cycle-though-fields-recordset
    https://bytes.com/topic/access/answers/943852-looping-through-recordsets-calculated-fields
    https://bytes.com/topic/access/answers/882583-loop-through-each-column-access-table
    https://www.devhut.net/2010/06/10/ms-access-vba-list-table-fields/
  • Grazie willy mi hai dato un bel pò di materiale da studiare
Devi accedere o registrarti per scrivere nel forum
14 risposte