Mi spiego meglio. Ho necessità di calcolare delle statistiche su un set di dati che viene aggiornato settimanalmente... ora se le statistiche (il DB è Access; usando le formule, i raggruppamenti, ecc.) vengono fatte su tutti i dati non ci sono problemi... ma se le stesse le devo calcolare su un set parziale di dati (per esempio: le prime 10 settimane, ecc.) mi sorge qualche problema, per cui ho "pensato":
- da asp mi creo una query (e relativo recordset) in modo dinamico (in modo che la condizione la posso variare a mio piacimento) sui dati parziali che mi servono;
- creo una seconda query che facendo riferimento ai dati filtrati della prima mi calcola le statistiche.

Si può fare da asp? se si quale è la sintassi della seconda query che prende come set di dati il recordset della prima query?

Spero di essere stato chiaro.
Ciao Gabriele.

P.S.: l'idea mi è venuta perchè da Access si possono fare query sui dati definiti da altre query.

www.dittacalcio.com
L'ennesimo sito di FantaCalcio.
11.886 messaggi dal 09 febbraio 2002
Contributi

P.S.: l'idea mi è venuta perchè da Access si possono fare query sui dati definiti da altre query.

già, infatti è questa la strada che dovresti percorrere.
Usa una subquery (cioè, due SELECT l'una dentro l'altra). Ti faccio un esempio sciocco:

SELECT mesi.nome, tabellaVisite.accessi FROM mesi LEFT JOIN (SELECT COUNT(*) as accessi, Month(data) as mese FROM statistiche WHERE Year(data)=2006 GROUP BY Month(data)) as tabellaVisite ON mesi.id = tabellaVisite.Mese

Ipotizza di avere una tabella mesi che contiene 12 record e che su ogni record, nel campo nome, ci siano i nomi dei mesi. Fai la left join di questa tabella con un'altra, generata al volo (tabellaVisite) che contiene il conto di un raggruppamento mirato di record (solo quelli del 2006, raggruppati per mese).
ok?

Enjoy learning and just keep making
Ho fatto un po' di prove cercando di adattare il tuo esempio al mio caso... ma mi sono incartato!
Ti riporto la mia soluzione divisa che su Access funziona:
qry=
SELECT TB1.Codice, TB1.Settimana, TB1.Nome, TB1.Categoria, TB1.Quantita, TB1.PTot, TB1.Viaggi
FROM TB1
WHERE (((TB1.Settimana)<=20));

SELECT qry.Codice, Sum(qry.Quantita) AS Quantita, IIf(Sum([qry.PTot])=0,0,Sum([qry.PTot])/Sum([qry.Quantita])) AS PMed, Sum(qry.Viaggi) AS Viaggi
FROM qry
GROUP BY qry.Codice
HAVING (((qry.Codice)=233));

in asp i valori numerici delle condizioni WHERE e HAVING saranno sostituiti da variabili.
La funzione IIf di Access in asp funziona?
Mi puoi dare una mano perchè non capisco in che punto della prima select inserire la seconda e le relative condizioni di ricerca.

Ciao Gabriele

www.dittacalcio.com
L'ennesimo sito di FantaCalcio.
Credo di avere risolto facendo così:
SELECT TMP.Codice, Sum(TMP.Quantita) AS Quantita, IIf(Sum([TMP.PTot])=0,0,Sum([TMP.PTot])/Sum([TMP.Quantita])) AS PMed, Sum(TMP.Viaggi) AS Viaggi
FROM
[SELECT TB1.Codice, TB1.Settimana, TB1.Nome, TB1.Categoria, TB1.Quantita, TB1.PTot, TB1.Viaggi
FROM TB1
WHERE (((TB1.Settimana)<=20)). AS TMP]
GROUP BY TMP.Codice
HAVING (((TMP.Codice)=233));

l'unico dubbio che mi è rimasto è sapere se mettendo la suddetta sintassi all'interno di asp il tutto funzioni ancora; perchè prima di questa sera non posso fare prove.
Forse facendo un controllo IS NULL invece dell'IIf??

Ciao Gabriele.

www.dittacalcio.com
L'ennesimo sito di FantaCalcio.
11.886 messaggi dal 09 febbraio 2002
Contributi
se quella query funziona su access, dovrebbe quasi sicuramente funzionare anche se viene eseguita da una pagina asp.

Se non ti funziona prova togliendo un po' di parentesi superflue.

SELECT TMP.Codice, Sum(TMP.Quantita) AS Quantita, IIf(Sum(TMP.PTot)=0,0,Sum(TMP.PTot)/Sum(TMP.Quantita)) AS PMed, Sum(TMP.Viaggi) AS Viaggi
FROM
(SELECT TB1.Codice, TB1.Settimana, TB1.Nome, TB1.Categoria, TB1.Quantita, TB1.PTot, TB1.Viaggi
FROM TB1
WHERE TB1.Settimana<=20) AS TMP
GROUP BY TMP.Codice
HAVING TMP.Codice=233
Modificato da BrightSoul il 01 marzo 2006 15.07 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.