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

    Dubbio su SQL e raggruppamenti

    ciao a tutti, vorrei sapere se c'è un metodo più veloce e gradevole da leggere per estrarre la somma, il numero di recordset e il nome del cliente (questo per ogni gruppo raggruppato per ruolo che sono 3 in totale) , il tutto da un'unica sql, magari tramite raggruppamento... io ho scritto questo codice:

    ' Lettura costo Totale
    Command.CommandText = "SELECT SUM(costo) as Totale FROM 123456 WHERE ruolo='A'"
    Lettore.Close()
    Lettore = Command.ExecuteReader()
    Lettore.Read()
    Lcta.Text = Lettore("totale").ToString

    ' Contatore Recordset
    Command.CommandText = "SELECT count(id) as contatore FROM 123456 WHERE ruolo='A'"
    Lettore.Close()
    Lettore = Command.ExecuteReader()
    Lettore.Read()
    Lna.Text = Lettore("contatore").ToString & "/3"
    Lettore.Close()

    In più tramite una slqdatasource ed un menù quando seleziono la voce

    SqlSQ.SelectCommand = "SELECT * FROM 123456 WHERE ruolo= 'A'"

    Quindi ho 3 query per un'unica operazione, quando magari potrei avere 3 datareader con 3 gruppi diversi

    spero di essermi spiegato abbastanza bene....

  2. #2
    non vedo xke' non debba funzionare:

    SELECT count(id) as contatore, SUM(costo) as Totale FROM 123456 WHERE ruolo='A'

    per quanto riguarda somma e totale

    non ho capito dove trovi il nome del cliente ^^'
    Fiore Bat - www.bcscommunity.it

  3. #3

    OK!

    Ciao, funziona perfettamente grazie, già il nome del cliente in effetti non si vede, A sta per amministratore, e il cliente o meglio il nome del cliente lo ribecco facendo una select completa.
    Intanto grazie, mi son risparmiato un paio di passaggi!

    Una sola precisazione, se io faccio un raggruppamento con "A" i dati che ho nel datareader, posso fare un count e una somma dei totali?

    In tal modo avrei un Datareader con i dati degli Amministratori, e poi posso fare un conteggio di quanti sono e la somma dei totali.
    Ho provato a documentarmi ma sono un po' retrò con gli studi

  4. #4
    Dai un'occhiata qui

  5. #5
    lo puoi fare in 43424532452 maniere via programmazione

    ad ogni read() incrementi un contatore e sommi al totale il valore della nuova colonna


    int totale = 0;
    int contatore = 0;

    if (Lettore.Read()) {
    contatore++;

    Nome.Text = Lettore.GetString(0); //0 e 1 sono il numero della colonna
    Soldo.Text = Lettore.GetInt32(1);

    totale += Lettore.GetInt32(1);
    }
    Fiore Bat - www.bcscommunity.it

  6. #6
    while non if ^^'
    Fiore Bat - www.bcscommunity.it

  7. #7

    Ottimo link

    Ora lo studio meglio, ma mi sembra ottimo per il gridview, per la soluzione vi codice, si ce ne sono quasi quanti ne hai detti, speravo in un'unica sql
    Grazie dell'aiuto... e sicuramente al prox problema

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.