Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: Query Select SUM

  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Query Select SUM

    Ciao; ho scritto questa query SELECT SUM che funziona e restituisce correttamente i totali richiesti:

    codice:
    strVar = request.querystring("Var")
    
    SQLsum = " SELECT "
    
    SQLsum = SQLsum & " (SELECT SUM(tot) "
    SQLsum = SQLsum & " FROM tab WHERE tipo = 'mt' AND servizio = 1) AS tot_MT_1, "
    
    SQLsum = SQLsum & " (SELECT SUM(tot) "
    SQLsum = SQLsum & " FROM tab WHERE (tipo = 'at' OR tipo = 'ta' OR tipo= 'ibr') AND serv = 1) AS tot_AT, "
    
    SQLsum = SQLsum & " (SELECT SUM(tot) "
    SQLsum = SQLsum & " FROM tab WHERE tipo = 'mt' AND serv = 0) AS tot_MT_0, "
    
    SQLsum = SQLsum & " (SELECT SUM(tot) "
    SQLsum = SQLsum & " FROM tab WHERE serv = 1) AS tot_1, "
    
    SQLsum = SQLsum & " (SELECT SUM(tot) "
    SQLsum = SQLsum & " FROM tab WHERE serv = 0) AS tot_0, "
    
    SQLsum = SQLsum & " (SELECT SUM(tot) "
    SQLsum = SQLsum & " FROM tab WHERE tipo = 'AAA') AS tot_AAA "
    
    SQLsum = SQLsum & " FROM tab WHERE 1 = 1 "
    
    if strVar <> "" THEN
       SQLsum = SQLsum & " AND CampoVar = "& strVar &" "   
    end if
    
    SQLsum = SQLsum & " ORDER BY ID ASC " "
    Però mi aspettavo che quando strVar è diverso da nullo i totali si aggiornassero tenendo conto appunto di strVar, invece anche strVar diverso da nullo i totali rimangono quelli iniziali.

    Dove sbaglio?
    Grazie.
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    per ottenere il risultato che desideri, la condizione con strVar dovrebbe stare *dentro* ogni sub-query. riflettici...

  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Grazie Opt,

    ma se inserisco la condizione dentro ogni subquery va in errore... ed ecco perchè:

    SELECT (SELECT SUM(tot) FROM tab WHERE tipo = 'mt' AND serv = 1) AS tot_MT_1,
    AND CampoVar = 4 ....
    FROM tab WHERE 1 = 1 ORDER BY ID ASC
    C'è la virgola in più...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  4. #4

  5. #5
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Ho capito ....

    Così funziona... ma è esatto???

    codice:
    strVar = request.querystring("Var")
    
    SQLsum = " SELECT "
    
    if strVar <> "" THEN
    
       SQLsum = SQLsum & " (SELECT SUM(tot) "
       SQLsum = SQLsum & " FROM tab WHERE tipo = 'mt' AND servizio = 1 AND CampoVar = "& strVar &" ) AS tot_MT_1, ""
    else
       SQLsum = SQLsum & " (SELECT SUM(tot) "
       SQLsum = SQLsum & " FROM tab WHERE tipo = 'mt' AND servizio = 1) AS tot_MT_1, "
    end if
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  6. #6
    si, con access non credo ci siano altre soluzioni

  7. #7
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da optime
    si, con access non credo ci siano altre soluzioni
    Il db è mySQL.... non access...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  8. #8
    non conosco mySQL così bene...

  9. #9
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da optime
    non conosco mySQL così bene...
    tante grazie !!!
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  10. #10
    puoi provare con

    codice:
    ....
    SQLsum = SQLsum & " FROM tab WHERE tipo = 'mt' AND servizio = 1 AND (CampoVar = " & strVar & " OR strVar=NULL)"
    così risparmi una IF. ma non so bene come mySQL gestisca i NULL. fa' un po' di prove

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.