Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    somma valori in più tabelle

    Ciao a tutti.

    Ho un database contenente X tabelle. In ciascuna di queste ho, ad esempio, i campi record "Tizio" e "Caio", che quindi si ripetono per ogni tabella.

    Se in ogni tabella a Tizio e Caio sono associati due numeri, come posso ottenere un'unica tabella in cui avere la somma dei valori associati a Tizio e la somma dei valori associati a Caio?



    (Naturalmente il database è molto più complesso...)

    Grazie e buona giornata a chi legge

  2. #2
    Aggiungo: non è detto che tutte le tabella contengano i campi "Tizio" e "Caio". Anche una sola tabella potrebbe contenere il campo "Sempronio".

    La tabella risultante vorrei che fosse questa:

    TIZIO / XX (somma valori da n tabelle)
    CAIO / XX (somma valori da n tabelle)
    SEMPRONIO / XX (somma valori da 1 tabella)

  3. #3
    leggi le tabelle in UNION e il risultato lo tratti come un'unica tabella, del tipo

    codice:
    SELECT quello che vuoi FROM
    (
       SELECT campi FROM tabella1
       UNION
       SELECT stessicampi FROM tabella2
       UNION
       SELECT ancorastessicampi FROM tabella3
       ecc...
    )
    WHERE ....
    GROUP BY ...
    ORDER BY ...


  4. #4
    Sono un po' a corto di ASP, ti chiedo - se possibile - un altro supporto. Considera che le tabelle sono circa 30, nel codice sotto le ho ridotte a 3:

    Codice PHP:

    <%
        
    set rs server.createobject("ADODB.Recordset")
        
    database "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.Mappath("/mdb-database/prova.mdb")
        
    query "select * from (SELECT nome,valore FROM tab1 UNION SELECT nome,valore FROM tab2 UNION SELECT nome,valore FROM tab3) GROUP BY nome"
        
    rs.open query,database

        response
    .write valore

        rs
    .close
        set rs 
    nothing
    %> 
    La somma dei valori con lo stesso campo "nome" nelle varie tabelle, come la faccio? Ma, soprattutto, i risultati raccolti come li pubblico? Un loop?

  5. #5
    dividiamo il problema in due

    1. istruzione SQL per ottenere il risultato corretto
    2. pubblicazione del risultato

    iniziamo da 1

    ti consiglio di preparare la tua query così

    codice:
    Query =""
    Query = Query & " SELECT" 
    Query = Query & " nome, sum(valore) " ' <---- somma!
    Query = Query & " FROM (" 
    Query = Query & "    SELECT nome,valore FROM tab1" 
    Query = Query & "    UNION" 
    Query = Query & "    SELECT nome,valore FROM tab2" 
    Query = Query & "    UNION" 
    Query = Query & "    SELECT nome,valore FROM tab3" 
    Query = Query & ")"
    Query = Query & " GROUP BY nome"
    molto più leggibile e manutenibile, non trovi?

  6. #6
    Grazie. Ora è tutto ok

    Ho aggiunto "as somma" dopo "sum(valore)".

  7. #7

  8. #8
    Mi è venuta in mente un'altra problematica

    Se oltre a fare il GROUP BY per "nome", volessi farlo anche per un altro record (per il quale ad alcuni nomi è associato il valore Y e per altri quello Z), come potrei fare?

    Il risultato, dovrebbe essere:

    elenco nomi / elenco valori
    .
    .
    .
    altro record / somma valori dei nomi con attributo Y
    altro record / somma valori dei nomi con attributo Z

  9. #9
    Ho praticamente scritto un'altra query che, prima di quella che permette di visualizzare l'elenco dei nomi con l'elenco relativo delle somme, calcola la somma dei valori di quei nomi cui è associata la lettera Y.

    Non so quanto sia "leggero" per il server duplicare il tutto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.