Newsgroup: it.comp.appl.access
Titolo: Raccogliere dati

Ho un data base che genera una tabella del genere. Vorrei fare una query
dove posso inserire due date (Data inizio ciclo - Data fine ciclo) che alla
fine mi facesse uscire una tabella con la somma di quanti pezzi (Ad es.5 pz
46808333 Van: 7 pz 46537901 DS ecc.) sono stati prodotti e un totale di
tutti i pezzi.
Description                             End
46808333 Van           02/01/01 6.49.16
46808333 Van           02/01/01 6.49.41
46808333 Van           02/01/01 6.53.57
46537901 DS            02/01/01 6.51.22
46537901 DS            02/01/01 6.52.14
46753742 Sp             02/01/01 6.52.38
46753742 Sp             02/01/01 6.53.27
46753742 Sp             02/01/01 6.55.01
46558426 1.2            02/01/01 6.55.46
46558426 1.2            02/01/01 6.56.27
46558426 1.2            02/01/01 6.57.17
Il risultato dovrebbe essere quindi:
46808333 Van = 3 pz
46537901 DS = 2 pz
46753742 Sp = 3 pz
46558426 1.2 = 3 pz
Totale 11 pz
Sono agli inizi e non sono stato in grado di risolvere il problema che credo
comunque semplice per chi conosce il programma.
Qualcuno potrebbe aiutarmi ?
Grazie

 ha scritto nel messaggio
news:VT2K9.10411$ab2.2...@news1.tin.it...

Se la tabella che contiene i dati si chiama Tabella1 ed ha una struttura
simile a questa:
ID                  Cintatore e chiave primaria
Descrizione    Testo
DataOra         Data/ora
ecc. ecc.
Creati una query unione che abbia il seguente codice SQL:
SELECT Descrizione, Count(Descrizione) AS ConteggioDiDescrizione
FROM Tabella1
WHERE (((Tabella1.DataOra) Between [Digita la data e l'ora di inizio:] And
[Digita la data e l'ora di fine:]))
GROUP BY Tabella1.Descrizione
UNION SELECT "TOTALE" As Descrizione, Count(Descrizione) AS
ConteggioDiDescrizione
FROM Tabella1
WHERE (((Tabella1.DataOra) Between [Digita la data e l'ora di inizio:] And
[Digita la data e l'ora di fine:]));
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 Roberto
Fatto e funziona perfettamente. GRAZIE !!!!!!!!!!!!!
Ma ho 4 tabelle e ho creato 4 query, una per ogni tabella. Come faccio a
unire i risultati parziali e totali con una singola query ? Ultima cosa. Le
tabelle hanno dei codici articolo (ad es nella tabella_1 46808333 Van e
nella tabella_2 46808333/12 che poi sono lo stesso articolo) come faccio a
fargli escludere dal conteggio e quindi dalla somma dal 9° carattere in poi
? In pratica deve sommarmi singolarmente tutti i cod con i primi 8 caratteri
uguali indipendentemente da quello che c'è dopo siano essi simboli o lettere
o numeri (LIKE ?)
Grazie ancora
Luca

 ha scritto nel messaggio
news:s8oK9.19360$lV4.7...@news2.tin.it...

Se i dati li hai suddivisi su quattro tabelle, devi prima crearti una query
unione che congloba i dati delle 4 tabelle e che chiamerai Query1.
Baserai quindi la query di raggruppamento che ti dà i risultati cercati su
Query1 invece che sulle singole tabelle.
Quanto al secondo problema, è sufficiente usare la funzione Left (vedi
help).
Se le 4 tabelle si chiamano rispettivamente Tabella1, Tabella2, Tabella3 e
Tabella4 ed hanno tutte e 4 la stessa struttura ovvero:
Descrizione        Testo
DataOra            Data/ora
Query1 avrà un codice SQL di questo tipo:
SELECT Descrizione, DataOra
FROM Tabella1
UNION SELECT Descrizione, DataOra
FROM Tabella2
UNION SELECT Descrizione, DataOra
FROM Tabella3
UNION SELECT Descrizione, DataOra
FROM Tabella3;
La query di raggruppamento avrà invece il seguente codice SQL:
SELECT Left(Descrizione, 8) As Des, Count(Descrizione) AS
ConteggioDiDescrizione
FROM Query1
WHERE (((Query1.DataOra) Between [Digita la data e l'ora di inizio:] And
[Digita la data e l'ora di fine:]))
GROUP BY Left(Descrizione, 8)
UNION SELECT "TOTALE" As Des, Count(Descrizione) AS ConteggioDiDescrizione
FROM Query1
WHERE (((Query1.DataOra) Between [Digita la data e l'ora di inizio:] And
[Digita la data e l'ora di fine:]));
Stai attento: se la prima query non si chiama Query1, dovrai modificare il
codice SQL della seconda query, sostituendi tutte le parole Query1 con il
vero nome della prima query.


 FROM Tabella3;
Scusa, volevo scrivere:
SELECT Descrizione, DataOra
FROM Tabella1
UNION SELECT Descrizione, DataOra
FROM Tabella2
UNION SELECT Descrizione, DataOra
FROM Tabella3
UNION SELECT Descrizione, DataOra
FROM Tabella4;
Tutta colpa del copia/incolla. :-)


 > FROM Tabella4;
Funziona tutto perfettamente. Solo che eseguendo le 4 query singolarmente e
facendo le somme non mi trovo con i conteggi finali. Nel senso che le
singole 4 query mi danno ad es. come tot cod ....333 = 498 (tenendo conto
che ho sommato i cod ....333-....332 + ....333 Van + ....333/12), mentre
eseguendo la query globale (query2) mi da 492. Come mai ?
Grazie ancora
Luca

 ha scritto nel messaggio
news:aBpK9.19918$lV4.7...@news2.tin.it...

Mi dispiace, ma mi si č rotta la sfera di cristallo. :-)
Onestamente non vedo con quale logica lo domandi a me!
I dati ce li hai in mano tu e tu hai digitato i parametri di selezione della
query di ragruppamento, quindi solo tu hai gli elementi per giustificare
questa differenza.
I totali generali della nuova query di raggruppamento quadrano con la somma
dei quattro totali generali delle vecchie 4 query?
Potresti togliere dalla nuova query la funzione Left: cosě per ogni articolo
avrai 4 totali che dovresti quadrare con quelli delle 4 query precedenti:
cosě potrai vedere meglio dove hai la differenza.
Stai poi attento: i record che dovessoro avere il volore Null nel campo
DataOra non vengono presi in considerazione.
Insomma č il caso che prendi un pallottoliere e cominci a contarti i record
per vedere dove č l'errore. ;-)


 per vedere dove è l'errore. ;-)
Provvederò per il pallottoliere, non si sa mia :)
Ho fatto in modo tale che ora accanto alla colonna Description compare una
colonna Model che raggruppa tutti i codici uguali nelle 8 cifre. Ci sono 11
Model che raggruppano i codici. La tabella ha questa forma:
Model                Description                        End
001                11223344                    01/01/02 06.00.00
"Raggruppato"
001                11223344-Van            01/01/02 06.00.50
"Raggruppato"
001                11223344/12               01/01/02 06.01.02
"Raggruppato"
003                11223355-DS             01/01/02 06.01.45
002                11223388/10              01/01/02 06.02.01
009                11223388-AS             01/01/02 06.02.27
"Raggruppato"
009                11223377-AS             01/01/02 06.02.42
"Raggruppato"
008                11223366                    01/01/02 06.03.02
Ho così raggruppato i codici uguali nelle prime 8 cifre ma mi da errore.
Come devo impostare le 6 query ? Nel risultato finale poi vorrei far
comparire una cosa del genere per una lettura veloce dato che ogni tabella
ha dimensioni che vanno da 700 Mb a 1,7-1,9 Gb di dati :
001 = 11223344 =     150
002 = 11223388 =     214
008 = 11223366 =     123
003 = 11223355-DS = 73
TOTALE                    560
Grazie ancora....risolto questo avanzi un bel pò da me :D
Luca

 Infatti
Infatti cosa significa?
Se hai record con valore null nel campo DataOra, questi non verrano
selezionati ai fini del conteggio, in qyuanto è su tale campo che effettui
la selezione.

Se i nomi dei campi delle tue tabelle sono Model, Description e End, prova
così:
Query1 avrà il seguente codice SQL:
SELECT Model, Description, End
FROM Tabella1
UNION SELECT Model, Description, End
FROM Tabella2
UNION SELECT Model, Description, End
FROM Tabella3
UNION SELECT Model, Description, End
FROM Tabella4;
La seconda query unione di raggruppamento avrà il seguente codice SQL:
SELECT Model, First(Left(Query1.Description, 8)) AS Descrizione,
Count(Query1.Description) AS ConteggioDiDescription
FROM Query1
WHERE (((Query1.End) Between [Digita la data e l'ora di inizio:] And [Digita
la data e l'ora di fine:]))
GROUP BY Query1.Model
UNION SELECT "TOTALE" As Model, Null AS Descrizione,
Count(Query1.Description) AS ConteggioDiDescription
FROM Query1
WHERE (((Query1.End) Between [Digita la data e l'ora di inizio:] And [Digita
la data e l'ora di fine:]));


 Roberto
Sei un grande.
Grazie
Luca