Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

di il
13 risposte

Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

Buongiorno,
questa volta il CASO è complicato, dunque:
un DB con 2 tabelle in relazione:

TABELLA1 in relazione una a molti con TABBELLA2

TABELLA1
id_tab1
campo1
campo2
ecc...

TABELLA2
id_tab2
data
id_tab1
campoY
campoZ
campoK
campoX
ecc...

con una query estrapolo alcuni dati ed ottengo:
id_tab2....data.....id_tab1.....campo1.... campo2.....campoY....campoZ.....campoK......campoX
1xxx.......data........1..........aaaa.........aaaa..........1............0.............0.............0
2xxx.......data........2..........bbbb.........bbbb..........0............1.............0.............0
3xxx.......data........3..........cccc..........cccc...........0............0.............0.............1
4xxx.......data........1..........aaaa.........aaaa...........0............0.............1.............0
e così via.....

veniamo al dunque, vorrei manipolare questi dati ottenuti con la query e più precimante vorrei interrogare questi dati in modo da ottenere per ciascun id_tab1:
1) la somma: (campoY + campoK) e la somma (campoZ+campoX).
2) la differenza tra (somma campoY+campoK) – (somma campoZ+campoX)

come risultato vorrei che venissero evidenziati solo gli id_tab1 la cui differenza tra le somme è diversa da zero

in base a quanto detto per l'esempio sopra dovrei avere come risultato finale e vedere evidenziati gli id_tab1: id2 e id3


Non so se sono stato abbastanza chiaro ma spero sull'aiuto del FORUM.
GRAZIE

13 Risposte

  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    Fatto: non si lavora a cottimo

    Informazione: puoi risolvere il problema usando le subquery

    Nota: studiare

    PREGO
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    1) esattamente, cosa non sai fare, di tutto ciò che chiedi?
    2) cosa intendi con 'evidenziare' ?
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    Mi attengo scrupolosamente e letteralmente alla richiesta, ragionando per piccoli passi.

    darki ha scritto:


    1) la somma: (campoY + campoK) e la somma (campoZ+campoX)
    2) la differenza tra (somma campoY+campoK) – (somma campoZ+campoX)
    Crea tante colonne, magari dando un nome appropriato, con le suddette formule di calcolo.

    darki ha scritto:


    come risultato vorrei che venissero evidenziati solo gli id_tab1 la cui differenza tra le somme è diversa da zero
    Cosa intendi per "evidenziati"?
    A) Colorati di "giallo": crea una maschera che poggia sulla tua query e sfrutta la "formattazione condizionale".
    B) Vuoi vedere i soli record che hai detto: crea una nuova Query2 con linea di join appropriata con TuaQuery e ovvio criterio di filtro.

    Spero di essermi fatto capire io (ammesso che abbia capito).

    Mie considerazioni personali (potrei sbagliarmi): non conosciamo il contenuto di CampoL (dove L è la Lettera), né la logica del tuo database...ma qualcosa (sotto sotto) mi dice che ci sia un problema di normalizzazione.
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    gibra ha scritto:


    1) esattamente, cosa non sai fare, di tutto ciò che chiedi?
    2) cosa intendi con 'evidenziare' ?
    Diciamo che non so fare le somme dei dati rispetto ad un ID, cioè di un ID sommare i valori che lo riguardano di due colonne e sottrarli ai valori di altre due colonne, ne tanto meno farlo fare per tutti gli ID nello stesso tempo con un solo clik.

    Per evidenziare intendo che interrogando il DB mi restituisca (elencandoli in una maschera o in un report) tutti gli ID la cui differenza
    tra (somma campoY+campoK) – (somma campoZ+campoX) non sia zero.
    Esempio (1+4)-(1+0)=4 quindi diverso da zero

    Nell'esempio usato i nomi campoX, campoY e via dicendo.... sono di fantasia, comunque sono campi che contengono numeri.
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    OsvaldoLaviosa ha scritto:


    Mi attengo scrupolosamente e letteralmente alla richiesta, ragionando per piccoli passi.

    darki ha scritto:


    1) la somma: (campoY + campoK) e la somma (campoZ+campoX)
    2) la differenza tra (somma campoY+campoK) – (somma campoZ+campoX)
    Crea tante colonne, magari dando un nome appropriato, con le suddette formule di calcolo.

    darki ha scritto:


    come risultato vorrei che venissero evidenziati solo gli id_tab1 la cui differenza tra le somme è diversa da zero
    Cosa intendi per "evidenziati"?
    A) Colorati di "giallo": crea una maschera che poggia sulla tua query e sfrutta la "formattazione condizionale".
    B) Vuoi vedere i soli record che hai detto: crea una nuova Query2 con linea di join appropriata con TuaQuery e ovvio criterio di filtro.

    Spero di essermi fatto capire io (ammesso che abbia capito).

    Mie considerazioni personali (potrei sbagliarmi): non conosciamo il contenuto di CampoL (dove L è la Lettera), né la logica del tuo database...ma qualcosa (sotto sotto) mi dice che ci sia un problema di normalizzazione.

    gibra ha scritto:


    1) esattamente, cosa non sai fare, di tutto ciò che chiedi?
    2) cosa intendi con 'evidenziare' ?
    Diciamo che non so fare le somme dei dati rispetto ad un ID, cioè di un ID sommare i valori che lo riguardano di due colonne e sottrarli ai valori di altre due colonne, ne tanto meno farlo fare per tutti gli ID nello stesso tempo con un solo clik.

    Per evidenziare intendo che interrogando il DB mi restituisca (elencandoli in una maschera o in un report) tutti gli ID la cui differenza
    tra (somma campoY+campoK) – (somma campoZ+campoX) non sia zero.
    Esempio (1+4)-(1+0)=4 quindi diverso da zero

    Nell'esempio usato i nomi campoX, campoY e via dicendo.... sono di fantasia, comunque sono campi che contengono numeri.
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    darki ha scritto:


    Buongiorno,
    questa volta il CASO è complicato, dunque:
    un DB con 2 tabelle in relazione:

    TABELLA1 in relazione una a molti con TABBELLA2

    TABELLA1
    id_tab1
    campo1
    campo2
    ecc...

    TABELLA2
    id_tab2
    data
    id_tab1
    campoY
    campoZ
    campoK
    campoX
    ecc...

    con una query estrapolo alcuni dati ed ottengo:
    id_tab2....data.....id_tab1.....campo1.... campo2.....campoY....campoZ.....campoK......campoX
    1xxx.......data........1..........aaaa.........aaaa..........1............0.............0.............0
    2xxx.......data........2..........bbbb.........bbbb..........0............1.............0.............0
    3xxx.......data........3..........cccc..........cccc...........0............0.............0.............1
    4xxx.......data........1..........aaaa.........aaaa...........0............0.............1.............0
    e così via.....

    veniamo al dunque, vorrei manipolare questi dati ottenuti con la query e più precimante vorrei interrogare questi dati in modo da ottenere per ciascun id_tab1:
    1) la somma: (campoY + campoK) e la somma (campoZ+campoX).
    2) la differenza tra (somma campoY+campoK) – (somma campoZ+campoX)

    come risultato vorrei che venissero evidenziati solo gli id_tab1 la cui differenza tra le somme è diversa da zero

    in base a quanto detto per l'esempio sopra dovrei avere come risultato finale e vedere evidenziati gli id_tab1: id2 e id3

    ho sbagliato il mio esempio il rigo 4xxx.......data........1..........aaaa.........aaaa...........0............1.............0.............0

    la riscrivo completamente

    id_tab2....data.....id_tab1......campo1.... campo2.....campoY....campoZ.....campoK......campoX
    1xxx.......data........1..........aaaa.........aaaa..........1............0.............0.............0
    2xxx.......data........2..........bbbb.........bbbb..........0............1.............0.............0
    3xxx.......data........3..........cccc..........cccc...........0............0.............0.............1
    4xxx.......data........1..........aaaa.........aaaa...........0............1.............0.............0
    5xxx
    6xxx
    7xxx
    .....-
    -----

    per ciascun id_tab1 vorrei avere

    1) la somma di tutti i valori del campoY e campoK (totalecampoY + totalecampoK) e dei valori del campoZ e campoX (totalecampoZ+totalecampoX).
    2) la differenza tra (totalecampoY + totalecampoK) – (totalecampoZ+totalecampoX)

    in base a quanto detto per l'esempio sopra dovrei avere come risultato finale e vedere evidenziati gli id_tab1: id2 e id3 (perchè la somma dei loro dati non sono pari a zero.)
    Infatti solo id1 rispetta quando detto e cioè (1+0)-(1+0)= 0
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    darki ha scritto:


    ...veniamo al dunque, vorrei manipolare questi dati ottenuti con la query e più precimante vorrei interrogare questi dati in modo da ottenere per ciascun id_tab1:
    1) la somma: (campoY + campoK) e la somma (campoZ+campoX).
    2) la differenza tra (somma campoY+campoK) – (somma campoZ+campoX)

    come risultato vorrei che venissero evidenziati solo gli id_tab1 la cui differenza tra le somme è diversa da zero

    in base a quanto detto per l'esempio sopra dovrei avere come risultato finale e vedere evidenziati gli id_tab1: id2 e id3


    Non so se sono stato abbastanza chiaro ma spero sull'aiuto del FORUM.
    GRAZIE
    Non so se interpreto in maniera corretta la tua richiesta.
    Comunque dovresti innanzitutto creare una query di somma (pulsante in alto alla barra di Access "Totali"), basata sulla tua query di selezione già realizzata, che chiamerai per esempio "qrySommaDati".
    Richiamerai come campi gli Id delle due tabelle, con formula "Raggruppamento" e i campi "campoY", "campoK", "campoZ" e "campoX", con formula "Somma".
    Aggiungi alla "qrySomma1" due nuovi campi:
    Somma1: Somma([campoY] + [campoK])
    Somma2: Somma([campoZ] + [campoX])
    con formula "Espressione"

    Crea un'altra query di somma, per esempio "qryDatiFinali", basata sulla query "qrySommaDati".

    Richiamerai come campi gli Id delle tabelle, con formula "Raggruppamento" e i campi "Somma1" e "Somma2", con formula "Somma".

    Aggiungi alla query "qryDatiFinali" un nuovo campo:
    Totale: Somma([Somma1] - [Somma2])
    con formula "Espressione".

    Togli i segni di spunta nel riquadro "Mostra" delle colonne che non vuoi visualizzare.
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    Ovviamente io ho usato nomi di fantasia. Tu usa quelli che ritieni più appropriati. Segui anche il consiglio di "Migliorabile". Studiare ti potrà essere sicuramente d'aiuto per il futuro!
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    Mi sono dimenticato di precisarti che nella colonna "Totale" della query "qryDatiFinali", come criterio dovrai impostare
    <> 0
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    Non so se interpreto in maniera corretta la tua richiesta.
    Comunque dovresti innanzitutto creare una query di somma (pulsante in alto alla barra di Access "Totali"), basata sulla tua query di selezione già realizzata, che chiamerai per esempio "qrySommaDati".
    Richiamerai come campi gli Id delle due tabelle, con formula "Raggruppamento" e i campi "campoY", "campoK", "campoZ" e "campoX", con formula "Somma".
    Aggiungi alla "qrySomma1" due nuovi campi:
    quale "qrySomma1"?

    Comunque prima di chiedere sul forum avevo fatto già delle prove con le subquery.
    Tra i vari consigli ho riffatto tutti i passaggi come indicato da ettore56, ma il risultato è parziale.
    Nel mio DB ho più dati , ma volendo rifarci all'esempio che ho messo per spiegare il mio problema, il risultato che ottengo è questo:

    id_tab2....data.....id_tab1.....campo1.... campo2.....Somma1....Somma2..........Somma
    1xxx.......data........1..........aaaa.........aaaa..........1..............0................. 1
    4xxx.......data........1..........aaaa.........aaaa..........0...............1................-1
    2xxx.......data........2..........bbbb.........bbbb..........0...............1................-1
    3xxx.......data........3..........cccc..........cccc...........1...............0................ 1

    Ho scritto sul Forum per trovare una soluzione al fatto che volevo come risultato finale, che per ogni id (id_tab1), la somma di tutti i suoi record (dati).
    Rifacendomi sempre all'esempio l'id_tab1, utente aaaa aaaaa con id1 dovrei avere la somma dei due record che lo riguardano, somma che farebbe zerro quindi, non dovrebbe comparire nel risultato della query.

    Risultato atteso:
    id_tab2....data.....id_tab1.....campo1.... campo2.....Somma1....Somma2..........Somma
    2xxx.......data........2..........bbbb.........bbbb..........0...............1................-1
    3xxx.......data........3..........cccc..........cccc...........1...............0................ 1

    Risoluzione parziale perchè mettendo usando RAGGRUPPAMENTO E SOMMA si ottiene ciò che volevo, ma per ottenerlo per esmpio ho dovuto mettere SOMMA anche al campo data che mi falsa il risultato facendo la somma delle date.

    COMUNQUE GRAZIE A TUTTI. BUONA DOMENICA.
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    darki ha scritto:


    quale "qrySomma1"?
    Ho sbagliato. Intendevo "qrySommaDati" e per questo me ne scuso. Nella fretta di scrivere ho sbagliato ad indicarti il nome della query.

    darki ha scritto:


    Risoluzione parziale perchè mettendo usando RAGGRUPPAMENTO E SOMMA si ottiene ciò che volevo, ma per ottenerlo per esmpio ho dovuto mettere SOMMA anche al campo data che mi falsa il risultato facendo la somma delle date.
    Perché hai inserito nella query il campo "data"?
    Tu avevi richiesto:

    darki ha scritto:


    come risultato vorrei che venissero evidenziati solo gli id_tab1 la cui differenza tra le somme è diversa da zero
    Ti ripeto:
    • 1) Nella "qrySommaDati" richiamerai come campi SOLAMENTE l'Id della tabella interessata, con formula "Raggruppamento" e SOLAMENTE i Campi "campoY", "campoK", "campoZ" e "campoX", con formula "Somma";

      2)Aggiungi alla "qrySommaDati" due nuovi campi:
      Somma1: Somma([campoY] + [campoK])
      Somma2: Somma([campoZ] + [campoX])
      con formula "Espressione";

      3)Crea un'altra query di somma, per esempio "qryDatiFinali", basata sulla query "qrySommaDati" e richiama come campi l'Id della tabella, con formula "Raggruppamento" e i campi "Somma1" e "Somma2", con formula "Somma".

      4)Aggiungi alla query "qryDatiFinali" un nuovo campo:
      Totale: Somma([Somma1] - [Somma2])
      con formula "Espressione";

      5)Nella colonna "Totale" della query "qryDatiFinali", come criterio dovrai impostare
      <> 0
      6)Nella query "qryDatiFinali" togli i segni di spunta nel riquadro "Mostra" delle colonne che non vuoi visualizzare. Lascia pertanto spuntati solo i campi "Id_tab1" e "Totale"
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    Scusa di che.. figurati.
    Effettivamente la data in questa fase del DB non mi serve!
    Riprovo il tutto, a dopo.
  • Re: Dati di una query, operazioni in base all' ID: somma e confronto dei dati dei CAMPI.

    Si senza il campo DATA tutto ok, volevo fare 2 cose insieme ma le faccio con 2 query diverse!
    Grazie.
Devi accedere o registrarti per scrivere nel forum
13 risposte