Newsgroup: it.comp.software.database
Titolo: conteggio incrementale2

Ho una tabella contenente i seguenti valori(da considerare come partite 
successive tra squadre di calcio,anche delle centinaia)
dovrei calcolare ad ogni riga(nei campi ContaPartitePro1 e ContaPartitePro2) 
il totale progressivo delle partite giocate da ogni squadra,
fino a quel momento tenendo per� presente l'ultimo totale progressivo che 
deve essere attinto durante il calcolo
sia dal campo ContaPartitePro1 che dal campo ContaPartitePro2
TabellaPartite
 Casa          Fuori     ContaPartitePro1     ContaPartitePro2
 a1                a2
 a3                a4
 a4                a5
 a3                a2
 a1                a5
 a6                a5
 a5                a6
La tabella � gi� riempita nelle prime due colonne che sono fisse,non c'�
inserimento
e neppure la modifica di record esistenti,c'� solo da calcolare i valori di
ContaPartitePro1 e ContaPartitePro2 su tutta la lista una sola volta.
Sono riuscito con la procedura di cui sotto a creare la seguente tabella
inserendo un campo contatore(ID)
 Casa        Fuori     ContaPartitePro1     ContaPartitePro2        ID
 a1                a2             1                        1 
1
 a3                a4             1                        1 
2
 a4                a5             1                        1 
3
 a3                a2             2                        2 
4
 a1                a5             2                        2 
5
 a6                a5             1                        3 
6
 a5                a6             1                        1 
7
Purtroppo il calcolo incrementale � giusto ma solo sulle singole colonne 
(vedi per
esempio a5)
nella partita a4-a5 il valore di ContaPartitePro1 dovrebbe essere per� 2 e 
non 1
infatti a4 in precedenza ha gi� giocato una partita con a3 e nella partita 
a5-a6
il valore del campo ContaPartitePro1 dovrebbe essere 4 e non 1)
La tabella corretta deve essere cos�:
 Casa        Fuori     ContaPartitePro1     ContaPartitePro2        ID
 a1                a2             1                        1 
1
 a3                a4             1                        1 
2
 a4                a5             2                        1 
3
 a3                a2             2                        2 
4
 a1                a5             2                        2 
5
 a6                a5             1                        3 
6
 a5                a6             4                        2 
7
(Notare per meglio capire gli ultimi due incontri di a5,nell'ultimo campo vi 
� un
progressivo di 3 e poi nell' ultimo record di 4).
Non si tratta di calcolare i progessivi SEPARATI di casa e fuori casa,
ma i progessivi reciproci o assoluti per ogni squadra sui due campi (va bene 
il termine?).
Sul newgroup di It.delphi non sono riusciti a risolvere,chiedo aiuto a 
codesto newgroup.
Grazie Paolo
procedure TForm1.Button1Click(Sender: TObject);
begin
  TPartite.First;
    While not TPartite.Eof Do
 Begin
                 with QueryContaCasa do begin
close;
SQL.Clear;
SQL.Add('select Casa,count(Casa)as ContaPartitePro1');
SQL.Add('from TPartite');
SQL.Add('where Casa =:SquadraA and ID <=:ID1');
SQL.Add('group by Casa');
ParamByName('SquadraA').Value :=TPartiteCasa.AsString ;
ParamByName('ID1').Value :=TPartiteID.AsInteger ;
open;
    end;
                     with QueryContaFuori do begin
close;
SQL.Clear;
SQL.Add('select Fuori,count(Fuori)as ContaPartitepro2');
SQL.Add('from TPartite');
SQL.Add('where Fuori =:SquadraB and ID <=:ID1');
SQL.Add('group by Fuori');
ParamByName('SquadraB').Value :=TPartiteFuori.AsString ;
ParamByName('ID1').Value :=TPartiteID.AsInteger ;
open;
    end;
    TPartite.Edit;
    TPartiteContaPartitePro1.AsInteger:=QueryContaCasa.AsInteger 
;/////secondo me
qui ci vorrebbe del codice ad hoc,ma forse non � qui che bisogna 
intervenire.
    TPartiteContapartitePro2.AsInteger:=QueryContaFuori.AsInteger ;
    TPartite.Edit;
    TPartite.Post;
   TPartite.Next;
 end;
end; 

 Grazie Paolo
supponiamo che devi riempire il ContaPartitePro1 del record con ID 5 dove
la squadra in casa � a5 (sto dando valori a caso eh)
la query che ti restituisce il numero che richiedi �:
select count(*) from tabella where ID<=5 and (casa='a5' OR fuori='a5')
lo stesso per ContaPartitePro2
non l'ho testato ma mi smebra che non ci sia niente di cos� complicato

Grazie per la risposta,ora funziona,avevo anch'io provato la tua 
procedura,ma con le parentesi in posizione errata!!
Grazie ancora

 procedura,ma con le parentesi in posizione errata!!
subito in un angolino a ripassare l'algebra booleana!