Newsgroup: it.comp.appl.access
Titolo: query per me complicata.....

Saluti a tutto il N.G.. Ho questo problema che spero
qualcuno possa aiutarmi a risolvere :
Ho una tabella nella quale per ogni record ho i campi :
Utente(numerico)  tipo1(data)    tipo2(data)    tipo3(data)
Ogni record puo' avere una data sola o anche due o tre e
l'utente puo' ripetersi in vari record . Es :
utente     tipo1            tipo22            tipo33
a         1/1/2002                             5/2/2002
b         1/5/2002        4/3/2002
a                               1/6/2002       12/2/2002
c         5/4/2002                              22/2/2002
Ho bisogno di trovare su un periodo (es. 1/1/2002 -31/3/2002)
quante volte per ogni utente si e' presentato ogni tipo cioe' vedere  :
utente     tipo1        tipo2     tipo3
a            1               0           2
b            0               1           0
c            0               0           1
Ringrazio chiunque vorra' provare ad aiutarmi e saluto tutti.

 wrote in message
uI7H8.6433$se2.1...@twister1.libero.it...

Vedi Query a campi incrociati... č la soluzione.
--
Maurizio75

 ti ringrazio, provero'

 ha scritto nel messaggio
news:uI7H8.6433$se2.1...@twister1.libero.it...

Beh, se come hai esemplificato nel campo Utente ci possono essere i valori
a, b e c, mi sembra strano che il suo tipo dato sia Numerico, sembrerebbe
più che il suo tipo dato sia Testo, e tale lo considererò nel mio esempio.
Se la tabella che contiene i dati si chiama Tabella1 ed ha la seguente
struttura:
ID            Contatore e chiave primaria
Utente       Testo
Tipo1        Data/ora
Tipo2        Data/ora
Tipo3        Data/ora
prova con una query che abbia il seguente codice SQL:
SELECT Tabella1.Utente, Val(DCount("Tipo1","Tabella1","Utente=" & Chr$(34) &
[Utente] & Chr$(34) & " And Tipo1 >=  #01/01/2002# And Tipo1 <=
#31/03/2002#")) AS Tipo11, Val(DCount("Tipo2","Tabella1","Utente=" &
Chr$(34) & [Utente] & Chr$(34) & " And Tipo2 >=  #01/01/2002# And Tipo2 <=
#31/03/2002#")) AS Tipo22, Val(DCount("Tipo3","Tabella1","Utente=" &
Chr$(34) & [Utente] & Chr$(34) & " And Tipo3 >=  #01/01/2002# And Tipo3 <=
#31/03/2002#")) AS Tipo33
FROM Tabella1
GROUP BY Tabella1.Utente;
Se poi il campo Utente è effettivamente di tipo Numerico, prova con:
SELECT Tabella1.Utente, Val(DCount("Tipo1","Tabella1","Utente=" & [Utent] &
" And Tipo1 >=  #01/01/2002# And Tipo1 <= #31/03/2002#")) AS Tipo11,
Val(DCount("Tipo2","Tabella1","Utente=" & [Utente] & " And Tipo2 >=
#01/01/2002# And Tipo2 <= #31/03/2002#")) AS Tipo22,
Val(DCount("Tipo3","Tabella1","Utente=" [Utente] & " And Tipo3 >=
#01/01/2002# And Tipo3 <= #31/03/2002#")) AS Tipo33
FROM Tabella1
GROUP BY Tabella1.Utente;
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

rognosetta... ma interessante, in prima istanza, cosě su due piedi per 
ottere i dati relativi *a un solo tipo* potresti provare:
select utente, Count(tipo1) as pippo from tabella where tipo1 is not null
group by utente, tipo1
having tipo1 between #datastart# and #datastop#
per ottenerli tutti e tre ci devo pensare...

e' perfetto, solo una cosa, poiche' nel mio caso non conosco l'escursione
del periodo prima
ma dovrei immettere i parametri al momento, come devo modificare il tutto ??
Ti ringrazio

 Ti ringrazio
Se il campo Utente é di tipo Testo, prova con
SELECT Tabella1.Utente, Val(DCount("Tipo1","Tabella1","Utente=" & Chr$(34) &
[Utente] & Chr$(34) & " And Tipo1 >=  #" & Format([Digita Data di
Inizio:],"mm/dd/yyyy") & "# And Tipo1 <= #" & Format([Digita Data
Fine:],"mm/dd/yyyy") & "#")) AS Tipo11,
Val(DCount("Tipo2","Tabella1","Utente=" & Chr$(34) & [Utente] & Chr$(34) & "
And Tipo2 >=  #" & Format([Digita Data di Inizio:],"mm/dd/yyyy") & "# And
Tipo2 <= #" & Format([Digita Data Fine:],"mm/dd/yyyy") & "#")) AS Tipo22,
Val(DCount("Tipo3","Tabella1","Utente=" & Chr$(34) & [Utente] & Chr$(34) & "
And Tipo3 >=  #" & Format([Digita Data di Inizio:],"mm/dd/yyyy") & "# And
Tipo3 <= #" & Format([Digita Data Fine:],"mm/dd/yyyy") & "#")) AS Tipo33
FROM Tabella1
GROUP BY Tabella1.Utente;
Al momento dell'esecuzione della query si apriranno, in successione, due
finestre di dialogo: la prima che ti chiede di digitare la data di inizio e
la seconda che ti chiede di digitare la data di fine.
Ricordati di digitare nelle finestre la due date nella forma gg/mm/aaaa
(01/01/2002 0 31/03/2002).
Se Utente è di tipo Numerico, prova con:
SELECT Tabella1.Utente, Val(DCount("Tipo1","Tabella1","Utente=" & [Utente] &
" And Tipo1 >=  #" & Format([Digita Data di Inizio:],"mm/dd/yyyy") & "# And
Tipo1 <= #" & Format([Digita Data Fine:],"mm/dd/yyyy") & "#")) AS Tipo11,
Val(DCount("Tipo2","Tabella1","Utente=" & [Utente] & " And Tipo2 >=  #" &
Format([Digita Data di Inizio:],"mm/dd/yyyy") & "# And Tipo2 <= #" &
Format([Digita Data Fine:],"mm/dd/yyyy") & "#")) AS Tipo22,
Val(DCount("Tipo3","Tabella1","Utente=" & [Utente] & " And Tipo3 >=  #" &
Format([Digita Data di Inizio:],"mm/dd/yyyy") & "# And Tipo3 <= #" &
Format([Digita Data Fine:],"mm/dd/yyyy") & "#")) AS Tipo33
FROM Tabella1
GROUP BY Tabella1.Utente;
--
