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

    somma campi stessa riga

    salve, ho una tabella con più colonne che contengono valori numerici; se faccio una somma con

    SELECT p1 + p2 + p3 AS somma FROM tabella

    come faccio ad inserire il contenuto della colonna somma in una colonna esistente della stessa tabella (classico totale)

    Grazie

  2. #2
    Risolto con

    UPDATE tabella SET totale = (p1 +p2 + p3 + p4 + p5)

    Se volessi aggiornare la colonna 'totale' con la somma dei valori presenti nella riga meno i tre più bassi... come potrei fare?

    Grazie

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Innanzitutto una premessa,

    Solitamente si evita di scrivere in tabella i risultati
    di calcoli

    Questo è QUASI SEMPRE un errore strutturale
    che ti costringe poi a complicate manovre
    per tenere in riga il DB

    __________________________________________________ ________

    Comunque per esercitarci possiamo dire che:

    Se hai una tabella di nome "tabella"
    con i campi:
    __ ID ______ Key __ Autonccrementale
    __ p1 ______ Int __ NotNull
    __ p2 ______ Int __ NotNull
    __ p3 ______ Int __ NotNull
    __ p4 ______ Int __ NotNull
    __ p5 ______ Int __ NotNull
    __ totale __ Int __ Null

    __________________________________________________ ________

    Tu vuoi aggiornare il campo "totale" con la somma
    dei 2 maggiori valori fra p1, p2, p3, p4, p5

    __________________________________________________ _______

    Innanzitutto una precisazione:

    Con 8,5,4,3,3 risulta 13 (8+5 ____ Logico )
    Con 8,5,4,8,3 risulta 16 (8+8 ____ Scarta il 5 perche 3° posto )
    Con 8,5,4,5,3 risulta 18 (8+5+5 __ Prende 2 volte 5 perche pari merito)
    Con 8,5,4,8,8 risulta 24 (8+8+8 __ Prende 3 volte 8 perche pari merito)

    Se ci sono valori Null il risultato e "stupido" perche
    abbiamo premesso di impostare a NotNull i campi
    pertanto non abbiamo gestito i valori Null

    __________________________________________________ ______

    Con questa query (access) potresti arrivare al risultato

    codice:
    UPDATE 
    (
    SELECT 
    
    t.totale,  
    
    IIf(t.p1>=t.p2,1,0)+IIf(t.p1>=t.p3,1,0)+IIf(t.p1>=t.p4,1,0)+IIf(t.p1>=t.p5,1,0) AS w1, 
    IIf(t.p2>=t.p1,1,0)+IIf(t.p2>=t.p3,1,0)+IIf(t.p2>=t.p4,1,0)+IIf(t.p2>=t.p5,1,0) AS w2, 
    IIf(t.p3>=t.p1,1,0)+IIf(t.p3>=t.p2,1,0)+IIf(t.p3>=t.p4,1,0)+IIf(t.p3>=t.p5,1,0) AS w3, 
    IIf(t.p4>=t.p1,1,0)+IIf(t.p4>=t.p2,1,0)+IIf(t.p4>=t.p3,1,0)+IIf(t.p4>=t.p5,1,0) AS w4, 
    IIf(t.p5>=t.p1,1,0)+IIf(t.p5>=t.p2,1,0)+IIf(t.p5>=t.p3,1,0)+IIf(t.p5>=t.p4,1,0) AS w5, 
    
    IIf(w1>2.5,p1,0)+IIf(w2>2.5,p2,0)+IIf(w3>2.5,p3,0)+IIf(w4>2.5,p4,0)+IIf(w5>2.5,p5,0) AS TW
    
    FROM 
    tabella AS t
    ) AS Q02 
    SET Q02.totale = Q02.TW
    ;

    Facci sapere

  4. #4
    ciao nman, purtroppo penso che questa strada non è percorribile perché nella mia tabella ci sono molte più colonne delle 5 postate per l'esempio e soprattutto il range dei valori da calcolare è molto ristretto per cui mi troverei sicuramente nelle situazioni critiche che tu hai premesso. Grazie comunque della risposta e soprattutto... della premessa.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.