Newsgroup: it.comp.appl.access
Titolo: Più query in una non visualizza ii dati a volte !!

Ragazzi ho un serio problema... per me..
Dunque..premetto che sto parlando di un DB per gestire un piccolo torneo di
calcio..
Il mio problema si verifica nel calcolo delle statistiche.. Vi illustro che
accade:
Prendendo i dati dalla Tabella PARTITE (he contiene tutte le partite con i
goal di ogni squadra)
Ho creato una serie di Query che mi permettono di conteggiare quanti goal
ogni squadra ha fatto, quindi ho creato la query
GOALFATTI_CASA_ANDATA
(questa query contiene tutti i campi della tabella partire, perň effettua un
filtro su una squadra in particolare (es: la squadra con id 2) e con il
campo And_rit filtrato con il valore A)
GOALFATTI_CASA_ANDATA_CONTEGGIO
(Questa query invece non fa altro che aprire la queri precedente selezionare
il campo Risultato1 (essendo all'andata seleziona e conteggia il valore
della prima colonna quindi risultato1) ed effettua la SOMMA di tutti i
valori)
GOALFATTI_CASA_RITORNO
(questa filtra squadra1 con id2 e and_rit con valore R)
GOALFATTI_CASA_RITORNO_CONTEGGIO
GOALFATTI_FUORI_ANDATA
(questa Squadra2 con id 2 e And_Rit con valore A)
GOALFATTI_FUORI_ANDATA_CONTEGGIO
GOALFATTI_FUORI_RITORNO
(questa Squadra2 con id 2 e And_Rit con valore R)
GOALFATTI_FUORI_RITORNO_CONTEGGIO
Mentre le query qui sotto si basano sulle 4 query che vedi qui sopra ma
effettuano la somma dei risultati opposti ad ogniuna di esse.. cosě che
invece di ottenere i goal fatti ottengo i goal subiti ;))
GOALFATTI_CASA_ANDATA_CONTEGGIO
GOALFATTI_CASA_RITORNO_CONTEGGIO
GOALFATTI_FUORI_ANDATA_CONTEGGIO
GOALFATTI_FUORI_RITORNO_CONTEGGIO
Con tutte le query conteggio ho creato una ulteriore query (RIASSUNTOGOAL)
che raggruppa i dati e crea con somme varie i dati che mi occorrono ossia:
SommaGoalFatti
GoalFattiInCasa
GoalFattiFuori
DifferenzaReti
SommaSubiti
SubitiCasa
SubitiFuori
SubitiDifferenzaReti
Ecco questo č come si presenta la struttura.. e tutto funziona regolarmente
piů o meno..
Dico piů o meno perchč quando tutte le giornate giocate sono inserite le
query fanno il loro lavoro.. ma quando provo ad inserire una sola giornata
(come puň essere ad inizio campionato) le query funzionano ma non esendoci i
daiti che devono estrarre disponibili..alcune di queste (come ovvio) non
visualizzano nulla bloccandomi cosě la visualizzazione della query finale
RIASSUNTOGOAL.
Come posso fare a far si che la query RiassuntoGoal Estrapoli ugualmente i
dati anche se alcune delle query che la compongono, a volte , risultano
vuote??
Qualcuno di voi riesce ad aiutarmi nella comprensione di questo ABNORME
problema ?
Grazie.. confido in qualcuno di voi !!
PS: Cianzia anche in te eh ;))

 ha scritto nel messaggio
news:dII%c.220075$OR2.10...@news3.tin.it...

succo di tutto il discorso č che se ci sono delle partite che non hanno
risultato  perché non sono ancora state disputate  la somma dei goal da un
valore nullo.
Questo č dovuto al fatto che per Access 1+null = null
Per ovviare a questo inconveniente esiste la funzione nz(espressione;
valore )  che sostanzialmente fa questo:
 se espressione č null utilizza valore altrimenti utilizza espressione. (Non
so se č chiaro!)
Ti Faccio un esempio concreto:
Per calcolare tutti i gol fatti  dalle vaire squadre nelle partite di andata
la query č cosě:
SELECT Partite.Squadra1, Partite.And_Rit, Sum(nz([Risultato1];0)) AS
Goalfatti
FROM Partite
GROUP BY Partite.Squadra1, Partite.And_Rit
HAVING (((Partite.And_Rit)='a'));
Una alternativa all'utilizzo della funzione Nz č quello di testare nella
condizione che risultato1 o risultato2 non sia null in questo modo:
SELECT Partite.Squadra1, Partite.And_Rit, Sum(Partite.Risultato1) AS
GoalFatti
FROM Partite
WHERE ((Not (Partite.Risultato1) Is Null))
GROUP BY Partite.Squadra1, Partite.And_Rit
HAVING (((Partite.And_Rit)="a"));
Saluti
Cinzia
PS. Non so perchč ma da tiscali mi tornava indietro la mail che ti avevo
inviato, comunque questo č il posto migliore per questi problemi! Qualcuno
che ti risponde lo trovi di sicuro quasi sempre!

 ---------------------------------------------
Ciao Roberto..
allora in attesa che la mia PALADINA Cinzia mi dia una manina ..
provo ancora un po' a scervellarmi per risolvere il problema.
Roberto come puoi vedere dal DB che ti ho postato, ho una tabella PARTITE
come tabella principale dalla quale estraggo i vari dati per effettuare le
statistiche.
Il sistema da te suggerito non sono riuscito a farlo funzionare.. forse ho
capito male come gestirlo ? Ho riscritto il codice.. rtiadeguandolo al mio
db.. ma non capisco molto bene ciò che sto scrivendo.. e forse anche per
questo mi rimane difficile adeguarlo in modo corretto.. !
Attendo tue notizie !!
Grazie Saluti Marco

 Grazie Saluti Marco
Come ti ho risposto in privato non sono riuscito ad aprire il database che
mi hai inviato forse perché creato con una versione di Access successiva ad
Access 97, ed io invece uso solo tale versione.
Sarebbe il caso che tu postassi il nome della tabella  PARTITE e la sua
struttura.



La Tabella PARTITE č composta cosě:
IdPartita       contatore
Giornata n    Testo
And_Rit       Testo
Data            Data/Ora
Squadra1     Numerico
Squadra2     Numerico
Risultato1     Numerico
Risultato2     Numerico
Segno1         Testo
Segno2         Testo
SiNo             Si/No
Segno 1 e 2 sono celle dove si scrive (V) vinte (N) pareggiate (P) Perse non
servono per ora
SiNo invece č la casella che indica di considerare solo le partite con il Si
ossia quelle giocate.. ;)
Ok.. questa č la struttura.. ora viene il bello.. (io mi metto le mani nei
capelli e attendo !;PPP)
Speriamo bene.
Saluti e grazie !

 Saluti e grazie !
Alcuni chiaimenti:
1) Il campo And_Rit è puramente documentativo?
2) In And_Rit i valori possibili sono A e R?
3) Segno1 e Segno2 a cosa servomo? Se non ho capito male sono una
conseguenza dei valori Risultato1 e Risultato2, quindi equivalgono a campi
calcolcolati, e come tali non vanno memorizzati in una tabella.
4) In Squadra1 c'è sempre il codice della squadra che gioca in casa, oppure
c'è il codice della squadra di casa nel girone di andata e il codice della
squadra fuori casa nel girone di ritorno?
5) La tabella la popoli completamente al momento che conosci il calendario e
poi modifichi i valori dei campi mano a mano che si giocano le partite
impostando a Si il campo SiNo?
6) Il campo SiNo è di tipo booleano?


 6) Il campo SiNo è di tipo booleano?
Il valore di questo campo è impostato su VERO/FALSO (Vero=giocate Falso
Non=giocate)
Spero di aver chiarito il tutto ?
Saluti
Attendo tue notizie
Grazie !

 Grazie !
Prego


 ha scritto nel messaggio
news:P1W0d.89840$1V3.2...@twister2.libero.it...

Grande Roby, pardon..
ora ho capito meglio ciò che volevi sapere e ti dico che Squadra uno
contiene sempre la squadra che gioca in casa. Quidni per esempio
Roma Juve 3 0 A
Juve Roma 2 1 R
La prima colonna contiene sempre la squedra che gioca in casa !!!
Attendo ;o)
Grazie ;)
Ciao !

 ha scritto nel messaggio
news:wKY0d.240501$OR2.10...@news3.tin.it...

Allora stanti così le cose creati Query1 in modo che abbia il seguente
codice SQL:
SELECT IdPartita, 1 AS CFC, Squadra1 AS Squadra, Risultato1 AS FattiCasa, 0
AS FattiFuoriCasa, Risultato2 AS SubitiCasa, 0 AS SubitiFuoriCasa
FROM PARTITE
WHERE SiNo = True
UNION SELECT IdPartita, 2 AS CFC, Squadra2 AS Squadra, 0 AS FattiCasa,
Risultato2 AS FattiFuoriCasa, 0 AS SubitiCasa, Risultato1 AS SubitiFuoriCasa
FROM PARTITE
WHERE SiNo = True;
Quindi otterrai il risultato che cerchi da una query basata su Query1 che
abbia il seguente codice SQL:
SELECT Squadra, [GoalFattiInCasa]+[GoalFattiFuori] AS SommaGoalFatti,
Sum(FattiCasa) AS GoalFattiInCasa, Sum(FattiFuoriCasa) AS GoalFattiFuori,
[GoalFattiInCasa]-[GoalFattiFuori] AS FattiDifferenzaReti,
[SubitiCasa]+[SubitiFuori] AS SommaSubiti, Sum(SubitiCasa) AS SubitiCasa,
Sum(SubitiFuoriCasa) AS SubitiFuori, [SubitiCasa]-[SubitiFuori] AS
SubitiDifferenzaReti, [SommaGoalFatti]-[SommaSubiti] AS DifferenzaReti
FROM Query1
GROUP BY Squadra;
Se la tabella che contiene i nomi delle squadre si chiama SQUADRE ed ha una
struttura simile a questa:
IdSquadra            Contatore e chiave primaria
NomeSquadra      Testo
Se vuoi che nella query precedente ti compaia il nome delle squadre al posto
del loro codice, cambia il codice SQL di tale query nel modo seguente:
SELECT SQUADRE.NomeSquadra, [GoalFattiInCasa]+[GoalFattiFuori] AS
SommaGoalFatti, Sum(Query1.FattiCasa) AS GoalFattiInCasa,
Sum(Query1.FattiFuoriCasa) AS GoalFattiFuori,
[GoalFattiInCasa]-[GoalFattiFuori] AS FattiDifferenzaReti,
[SubitiCasa]+[SubitiFuori] AS SommaSubiti, Sum(Query1.SubitiCasa) AS
SubitiCasa, Sum(Query1.SubitiFuoriCasa) AS SubitiFuori,
[SubitiCasa]-[SubitiFuori] AS SubitiDifferenzaReti,
[SommaGoalFatti]-[SommaSubiti] AS DifferenzaReti
FROM Query1 INNER JOIN SQUADRE ON Query1.Squadra = SQUADRE.IdSquadra
GROUP BY SQUADRE.NomeSquadra;



Roberto..woooowwww !! Sembra che funzioni.. ora provo meglioooo ma pare che
tutto sia ok..
Per caso è possibile inserire all'interno di quella query2 anche il numero
totale di partite giocate ? Ho provato a guardate il codice ma non ci
capisco molto.
PS: hai un buon libro da consigliarmi per apprendere bene l'uso delle query
? E delle gestione di access ?
Grazie !!

 Grazie !!


 ha scritto nel messaggio
news:n2l1d.1011$2T6....@twister1.libero.it...

Bene provo e ti faccio sapere.. grazie per ora per le celeri risposte !
Per il libro controllerò.. io ho i manuali di access 1 non penso servano
ancora ;))
Dal 2.0 non l'ho più usate e mi sono praticamente scordato tutto !!
Saluti
PS: Controllerò sul sito ;)