Newsgroup: it.comp.lang.visual-basic
Titolo: SQL (questo è difficilotto)

Cari tutti,
visto che mi avete già aiutato più volte, vi sottopongo questo problemino
che non è per niente semplice:
Ho una tabella di un DB fatta più o meno così:
[Cognome]    [Data]    [Voto]
Rossi            10/8/02    1
Rossi            10/8/02    3
Rossi            12/8/02    2
Verdi            10/8/02    2
Verdi            11/8/02    1
Verdi            11/8/02    4
Bene. Adesso da VB, mi collego a questo DB con una connessione ADO.
Ora, con una "potente" stringa SQL vorrei ottenere un recordset così
composto:
[Cognome]    [Data]    [Voto]    [SommaProg Voto]
Rossi            10/8/02    4                4
Rossi            12/8/02    2                6
Verdi            10/8/02    2                2
Verdi            11/8/02    5                7
Quindi l'SQL dovrebbe:
1) raggruppare i voti sommandoli per Data per singolo Cognome (e fin qui ci
sarei anche riuscito !)
2) Oltre al raggruppamento deve crearmi un campo dove, per ogni Cognome, mi
indichi la somma progressiva dei voti presi da ogni Cognome, accumulandoli
nel tempo !!
Secondo voi si può fare ????
Si può fare in un colpo solo con una unica striga SQL (..sareste dei
maghi...) oppure è meglio creare un primo recordset  aggregando per data per
cognome e poi fare un secondo recordset sul primo, che effettui la somma
progressiva dei voti ???
A voi la parola......
Grazie a chiunque ha avuto la pazienza di leggere questo messaggione !
Chris

> "Chris" [...]:

        SELECT
            x_Chris.Cognome
          , x_Chris.Data
          , Sum(x_Chris.Voto) AS SommaDiVoto
          , Sum(x_Chris.Voto)
          + Val
            (
              ""
            & (
                SELECT
                    Sum(TEMP1.Voto) AS SommaDiVoto
                FROM
                    x_Chris AS TEMP1
                GROUP BY
                    TEMP1.Cognome
                  , TEMP1.Data
                HAVING
                    TEMP1.Cognome=x_Chris.Cognome
                    AND
                    TEMP1.Data<x_Chris.Data
                ORDER BY
                    x_Chris.Cognome
                  , x_Chris.Data
              )
            )
            AS SommaProgressivaDiVoto
        FROM
            x_Chris
        GROUP BY
            x_Chris.Cognome
          , x_Chris.Data
        ORDER BY
            x_Chris.Cognome
          , x_Chris.Data
        ;
OUTPUT
Cognome Data       SommaDiVoto SommaProgressivaDiVoto
Rossi   10/08/2002 4           4
Rossi   12/08/2002 2           6
Verdi   10/08/2002 2           2
Verdi   11/08/2002 5           7
SE&O!
--
Ciao :-)
Maurizio
--------
?SPQR(C)
 X
--------

 progressiva dei voti ???
Con una query  non lo si fa, l'unica è aprire un recordset con un
sum(voto) group by per nome data ordinato per nome data, poi fare un
loop e
riempire un array con i valori sommati nel tempo.
Ciao

         ;
Vhe fenomeno!!!!!
Ma tu fai ste cose gratis?
Sei matto?
:-)

 :-)
    :-)
    Apprezzo la battuta, ma non condivido. Ne' punto ne' poco. ;-)
Soprattutto la parte "economica".
    Portando alle estreme conseguenze il discorso ( come piace a me :-) in
base a questa logica i ng non avrebbero ragione di esistere.
    Alla domanda: "quanto fa due piu' due" come risponderesti?
     . "Per fare due piu' due devi sommare due a due".
       ( Molti, con malinteso, e millantato, spirito pedagogico, rispondono
       proprio cosi'... );
     . "Studia!";
     . "Premi F1.";
     . "Non si puo'".
       ( Perdona, ma questa e' la risposta che hai fornito tu. ;-);
     . non lo sai quindi non rispondi;
     . non ti va di rispondere a certe domande quindi non rispondi;
     . non ti va che vengano poste certe domande quindi rispondi dicendo
       la tua opinione in proposito;
     . non hai nulla da dire sull'argomento ma rispondi perche'
       l'importante e' partecipare;
     . "4";
     . "4. Perche' ...";
     . copi e incolli 22 pagine della guida. In inglese;
     . ...


[cut]. copi e incolli 22 pagine della guida. In inglese;
ROTFL ^__^
-- 
Best Regards,
Antonio Cangiano
Webmaster di 
www.visualcsharp.it
Fondatore di free.it.comp.lang.csharp
free.it.comp.lang.vbnet e free.it.comp.lang.aspnet
--

> "Maurizio Borrelli" [...]:
    Dimenticavo:
     . "3". )-: Personalmente ho risposto cosi' a certe domande. :-(


        ( Perdona, ma questa e' la risposta che hai fornito tu. ;-);
Già, questo è un classico errore concettuale.
Ricordiamoci sempre che "se un esperto dice che una cosa non si può fare è
solo perchè *LUI* non la sa fare".
Il principio del terzo escluso ci insegna anche questo :)
Ciao
--
' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("
http://www.neodatatype.net
")
' // you can find resources for and from the NG here!
Me.SitoComune = "
http://www.it-lang-vb.net
"

        ( Perdona, ma questa e' la risposta che hai fornito tu. ;-);
Va beh, però io ho proposto anche di valutare una valida alternativa.
:-)
Che non è detto sia meglio!
Con le subquery le prestazioni del motore Db spesso fanno abbastanza
pena.
Comunque questo non per giustificarmi, tu hai ragione, io in fondo ho
risposto che non si poteva invece si poteva. Ho sbagliato.
Tu sei stato un mito, nel postare la soluzione e nel farmi le tue giuste
osservazioni.
Comunque ue!
Ci stava dai!
:-)))))

 Il principio del terzo escluso ci insegna anche questo :)
Da stampare, incorniciare e appendere in ufficio, proprio qua dietro....
si si, ho già trovato l'angolino giusto!

 :-)))))
    Ma certo. Come e' anche certo che io non sono un mito. Almeno non per
quella query. :-))))
    E non occorre giustificarsi, da`i... Capita a tutti quello che e'
successo a te. E' capitato anche a me, e non una sola volta, e di certo non
ti posto i link di google. :-))) Percio' quando mi viene di scrivere "non si
puo'" sto piuttosto attento... Adesso starai piu' attento anche tu. :-))))
