Newsgroup: it.comp.appl.access
Titolo: Classifica Campionati che crea errori

Se i nomi delle squadre che partecipano al campionato sono contenuti in una
tabella chiamata Squadre che ha la seguente struttura
IdSquadra            Contatore e chiave primaria
Squadra                Testo
Se i risultati delle partite sono contenuti in una tabella chiamata Partite
che ha la seguente struttura:
IdPartita                Contatore e chiave primaria
DataPartita            Data/ora
SqCasa                 Numerico
GoalCasa              Numerico
SqFuori                Numerico
GoalFuori             Numerico
dove:
SqCasa contiene l'IdSquadra della squadra che gioca in casa
GoalCasa contiene i goal fatti dalla squadra che gioca in casa
SqFuori contiene l'IdSquadra della squadra che gioca in trasferta
GoalFuori contiene i goal fatti dalla squadra che gioca in trasferta
Creati una query unione chiamata Query1 che abbia il seguente codice SQL:
SELECT Squadre.Squadra,
IIf([GoalCasa]>[GoalFuori],3,IIf([GoalCasa]=[GoalFuori],1,0)) AS Punti, 1 AS
GiocateCasa, IIf([GoalCasa]>[GoalFuori],1,0) AS VinteCasa,
IIf([GoalCasa]=[GoalFuori],1,0) AS PariCasa, IIf([GoalCasa]<[GoalFuori],1,0)
AS PerseCasa, Partite.GoalCasa AS FattiCasa, Partite.GoalFuori AS
SubitiCasa, 0 AS GiocateFuori, 0 AS VinteFuori, 0 AS PariFuori, 0 AS
PerseFuori, 0 AS FattiFuori, 0 AS SubitiFuori
FROM Squadre INNER JOIN Partite ON Squadre.IdSquadra = Partite.SqCasa
UNION SELECT Squadre.Squadra,
IIf([GoalCasa]<[GoalFuori],3,IIf([GoalCasa]=[GoalFuori],1,0)) AS Punti, 0 AS
GiocateCasa, 0 AS VinteCasa, 0 AS PariCasa, 0 AS PerseCasa, 0 AS FattiCasa,
0 AS SubitiCasa, 1 AS GiocateFuori, IIf([GoalCasa]<[GoalFuori],1,0) AS
VinteFuori, IIf([GoalCasa]=[GoalFuori],1,0) AS PariFuori,
IIf([GoalCasa]>[GoalFuori],1,0) AS PerseFuori, Partite.GoalFuori AS
FattiFuori, Partite.GoalCasa AS SubitiFuori
FROM Squadre INNER JOIN Partite ON Squadre.IdSquadra = Partite.SqFuori;
Creati ora una query chiamata Classifica che abbia il seguente codice SQL:
SELECT Query1.Squadra, Sum(Query1.Punti) AS Punti,
[GiocateCasa]+[GiocateFuori] AS Giocate, [VinteCasa]+[VinteFuori] AS Vinte,
[PariCasa]+[PariFuori] AS Pari, [PerseCasa]+[PerseFuori] AS Perse,
[FattiCasa]+[FattiFuori] AS Fatti, [SubitiCasa]+[SubitiFuori] AS Subiti,
Sum(Query1.GiocateCasa) AS GiocateCasa, Sum(Query1.VinteCasa) AS VinteCasa,
Sum(Query1.PariCasa) AS PariCasa, Sum(Query1.PerseCasa) AS PerseCasa,
Sum(Query1.FattiCasa) AS FattiCasa, Sum(Query1.SubitiCasa) AS SubitiCasa,
Sum(Query1.GiocateFuori) AS GiocateFuori, Sum(Query1.VinteFuori) AS
VinteFuori, Sum(Query1.PariFuori) AS PariFuori, Sum(Query1.PerseFuori) AS
PerseFuori, Sum(Query1.FattiFuori) AS FattiFuori, Sum(Query1.SubitiFuori) AS
SubitiFuori
FROM Query1
GROUP BY Query1.Squadra
ORDER BY Sum(Query1.Punti) DESC;
Ho eseguito tutto alla perfezione da indicazione datami, ma provando sia su
Access 2000 che su Access 97, se la SqCasa  gioca in casa  3 partite o 2 o 4
consecutive x esempio come č capitato a noi, il programma ne considera solo
1, ci sara' un errore nelle formule?
        Saluti Sauro

 ha scritto nel messaggio
news:w72T9.96360$Ou4.
3106717
@twister2.libero.it...

E' vero fa proprio quel difetto ma non so da cosa ne viene, sembra tutto ok
        Ciao Francesco

         Saluti Sauro
Uso Access 97: ho provato questa soluzione facendo un brutale copia/incolla
dei codici SQL di cui sopra e a me funziona tutto bene, anche se una squadra
gioca in casa più partite consecutive. Non ti nascondo che mi piacerebbe
molto sapere perché a te (e sembrerebbe anche a Audax Calcio) invece non
funziona!
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Si l'ho fatto fare anche al mio amico Francesco dell' Audax Calcio con
Access 97 ed anche a lui fa l'errore che fa a me con il 2000 .
L'errore consiste in questo: si inseriscono i dati dalla maschera che vanno
a finire nella tabella "Partite" , fin qui è ok , ma la query di unione
"Query 1" non preleva tutte le partite, come dicevo e come ha constatato
anche Francesco,le partite in casa le preleva in modo anomalo falsando poi
la classifica che si forma nella query "Classifica" , basta provare con 3 o
4 partite consecutive di una squadra qualunque: se le gioca in casa e le
perde, la "Query 1" ne segna 1 giocata in casa e alle altre squadre ne segna
sempre una  giocata in casa (erroneamente), se le vince,  la "Query 1" ne
segna 1 giocata in casa e alle altre squadre ne segna sempre una  giocata
fuori casa (giustamente).
                                Sauro

                                 Sauro
Il fatto è che a me questo problema non lo dà, quindi mi è difficile
aiutarti, nella misura che non riesco a simulare il tuo errore.
Anche se per me ha poco senso, prova a modificare il codice SQL di Query1 in
questa maniera:
SELECT Partite.IdPartita & "C", Squadre.Squadra,
IIf([GoalCasa]>[GoalFuori],3,IIf([GoalCasa]=[GoalFuori],1,0)) AS Punti, 1 AS
GiocateCasa, IIf([GoalCasa]>[GoalFuori],1,0) AS VinteCasa,
IIf([GoalCasa]=[GoalFuori],1,0) AS PariCasa, IIf([GoalCasa]<[GoalFuori],1,0)
AS PerseCasa, Partite.GoalCasa AS FattiCasa, Partite.GoalFuori AS
SubitiCasa, 0 AS GiocateFuori, 0 AS VinteFuori, 0 AS PariFuori, 0 AS
PerseFuori, 0 AS FattiFuori, 0 AS SubitiFuori
FROM Squadre INNER JOIN Partite ON Squadre.IdSquadra = Partite.SqCasa
UNION SELECT Partite.IdPartita & "F", Squadre.Squadra,
IIf([GoalCasa]<[GoalFuori],3,IIf([GoalCasa]=[GoalFuori],1,0)) AS Punti, 0 AS
GiocateCasa, 0 AS VinteCasa, 0 AS PariCasa, 0 AS PerseCasa, 0 AS FattiCasa,
0 AS SubitiCasa, 1 AS GiocateFuori, IIf([GoalCasa]<[GoalFuori],1,0) AS
VinteFuori, IIf([GoalCasa]=[GoalFuori],1,0) AS PariFuori,
IIf([GoalCasa]>[GoalFuori],1,0) AS PerseFuori, Partite.GoalFuori AS
FattiFuori, Partite.GoalCasa AS SubitiFuori
FROM Squadre INNER JOIN Partite ON Squadre.IdSquadra = Partite.SqFuori;
--


 ha scritto nel messaggio
news:E5WT9.106973$Ou4.3...@twister2.libero.it...

Con questo codice funziona benissimo ( spero anche a Francesco di Audax
calcio con Access 97).
              ti ringrazio di cuore
                                                Sauro


Anche a me funziona alla perfezione . Grazie
                                            Francesco