Access - Contare valori univoci

Anonimo
2016-12-30T21:56:51+00:00

Ciao a tutti.. sto smanettando da poco con access e non trovo una soluzione al mio problema.

Ho creato una query semplice composta da 8 colonne (eta1, eta2, eta3.... eta8) che mi indicano l'età delle persone registrate.

Come posso ricavare in una query il totale dei valori delle età? (contando il valore ripetuto su tutte le colonne).

Esempio

Eta1 Eta2 Eta3 Eta4 Eta5 Eta6 Eta7 Eta8 


1       1       1      2     3       5     6      4

2       1       1      2     6       5     4      3

Risultato

Tot_eta1   Tot_eta2   Tot_eta3   Tot_eta4   Tot_eta5   Tot_eta6

     5                3              2               2             2                2

Grazie!!!!!!!!

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

4 risposte

Ordina per: Più utili
  1. Anonimo
    2017-01-02T09:10:19+00:00

    Ciao e buon anno,

    qualche chiarimento,

    Praticamente ho in una tabella sei campi che contengono cognome e nome ed altri 6 campi contenente la data di nascita.

    Quanti campi hai nella tabella?

    Quante date di nascita?

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-01-02T09:07:05+00:00

    .....mmmm....

    [...]

    Praticamente ho in una tabella sei campi che contengono cognome e nome ed altri 6 campi contenente la data di nascita.

    [...]

    era esattamente come sospettavo nel mio primo post.

    Da come capisco non ti sei minimamente documentato sul fronte normalizzazione.

    Un database relazionale non è un foglio di Excel.

    Converrai con me che l'età per ciascuno di noi è univoca e che non ha senso gestire una tabella con 7 campi contenenti nome e cognome (---> a questo proposito approfondirei bene il concetto di atomicità) e altri 7 contenenti l'età.

    Un esempio

    Supponendo una tabella fatta così :

    con una query di unione ottimizziamo i nominativi e il campo età :

    questo lo statement :

    SELECT left$(Tabella1.nomeEcognome1,6) as nuovoNome, right$(Tabella1.nomeEcognome1,3) as nuovoCognome, eta1 as NuovaEta from tabella1

    union all

    SELECT left$(Tabella1.nomeEcognome2,6) as nuovoNome, right$(Tabella1.nomeEcognome2,3) as nuovoCognome, eta2 as NuovaEta from tabella1

    union all

    SELECT left$(Tabella1.nomeEcognome3,6) as nuovoNome, right$(Tabella1.nomeEcognome3,3) as nuovoCognome, eta3 as NuovaEta from tabella1

    union all

    SELECT left$(Tabella1.nomeEcognome4,6) as nuovoNome, right$(Tabella1.nomeEcognome4,3) as nuovoCognome, eta4 as NuovaEta4 from tabella1

    union all

    SELECT left$(Tabella1.nomeEcognome5,6) as nuovoNome, right$(Tabella1.nomeEcognome5,3) as nuovoCognome, eta5 as NuovaEta5 from tabella1

    UNION ALL SELECT left$(Tabella1.nomeEcognome6,6) as nuovoNome, right$(Tabella1.nomeEcognome6,3) as nuovoCognome, eta6 as NuovaEta6 from tabella1;

    per poi procedere al conteggio :

    SELECT count(nuovaEta) AS contaEta, nuovaEta

    FROM (

                SELECT Tabella1.nomeEcognome1 as nuovoNomeCognome, eta1 as NuovaEta from tabella1

                     union all select

                             Tabella1.nomeEcognome2,eta2 FROM Tabella1

                     union all select

                             Tabella1.nomeEcognome3,eta3 FROM Tabella1

                     union all select

                            Tabella1.nomeEcognome4,eta4 FROM Tabella1

                      union all select

                            Tabella1.nomeEcognome5, eta5 FROM Tabella1

                      UNION ALL select

                           Tabella1.nomeEcognome6, eta6 FROM Tabella1

    )  AS drv

    GROUP BY drv.nuovaEta;

    tutto questo non serve se il database fosse normalizzato per bene.

    HTH.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-01-01T23:11:30+00:00

    Ciao! Per farla breve ho "accelerato" un pò le spiegazioni.

    Praticamente ho in una tabella sei campi che contengono cognome e nome ed altri 6 campi contenente la data di nascita.

    Ho ricavato con una query il totale delle età come spiegavo nel primo post....

    Forse la query non è corretta... Per farla breve i campi di riferimento sono le date... a questo punto c'è una soluzione per ricavare quante sono le persone che hanno 30 anni, 31 anni, 33 ani e così via....?

    Ciao!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-12-31T08:21:02+00:00

    ciao EssereLibero,

    l'impostazione del database non è corretta, ci sono delle evidenti ridondanze nel senso che il campo etàdeve essere univoco.

    Credo, a questo punto, oltre che essere ridondante il campo età ci possano essere altre ridondanze tipo il nome o cognome della persona.

    Devi applicare almeno le tre regole di normalizzazione, in modo che il database sia conforme alla 3NF, dopo di che una semplice query con funzione di conteggio e raggruppamento ti consente di conoscere quanti sono i "coscritti".

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento