Newsgroup: it.comp.appl.access
Titolo: raggruppamento a intervalli

Ciao a tutti,
ho questo problema e vorrei sapere secondo voi qual'č la miglior soluzione.
La mia anagrafica prevede il numero dei dipendenti delle aziende e vorrei
quindi creare dei sommari per commerciale di riferimento con il numero di
aziende e il fatturato medio per scaglioni di dipendenti, ad esempio da 0
a 50, da 51 a 100 e oltre i 100 dipendenti.
Ho provato con un report, usando il raggruppamento intervallo impostato su
50 ma ottengo tutti i casi (0-50, 50-100, 100-150, 150-200, ...) e non
posso nemmeno associare una descrizione ai gruppi.
La seconda idea č stata quella di creare una tabella con i numeri da 1 a
1000 e come seconda colonna un IDgruppo e come terza la sua descrizione.
Quindi da 1 a 50 l'IDgruppo č pari a 1 e la descrizione č "Dipendenti da 1
a 50" e via dicendo. Quindi facendo join sul numero di dipendenti posso
raggruppare per IDgruppo e fare tutto quello che mi serve.
Poi potrei creare una maschera che mi permette di specificare i gruppi e
le descrizioni e modifica questa tabella in maniera consona
automaticamente.
Purtroppo se ho un'azienda con 2000 dipendenti non viene mostrata e quindi
devo prevedere controlli per trovare il max dei dipendenti e inserire
righe fino a quel valore...
Ci sono altre soluzioni piů semplici secondo voi?
Grazie
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 raggruppare per IDgruppo e fare tutto quello che mi serve.
Non ho provato soluzioni con il raggruppamento nei report.
Se vuoi usare la tabella gruppi, invece dei numeri da 1 a 1000 metti due
campi, minimo e massimo, cosě avrai:
min...max...ID...Descriz
.1....50....1...Gruppo1
51...100....2...Gruppo2
101...150....3...Gruppo3
151.... .....4...Ultimo gruppo
L'ultimo "max" lasciato vuoto significa da 151 in poi, senza limiti.
Ovviamente dovrai usare un criterio adeguato per gestirlo:
numdip>=min AND (numdip<=nz(max) OR isnull(max))
Namor


 numdip>=min AND (numdip<=nz(max) OR isnull(max))
Mi piacerebbe fare cosě, ma non mi sembra possibile ottenere una query che
dia il risultato che voglio (tante righe quanti sono i gruppi impostati e
le medie di dipendenti e fatturato) con questa tabella gruppi. Che join
dovrei fare e su che campo?
La tua soluzione va bene se da una maschera imposto i criteri e poi voglio
aggregare i dati di un gruppo alla volta ma non tutti assieme come
interessa a me.
Se ho capito male spiegati meglio per favore.
Ciao e grazie cmq!


 Ciao e grazie cmq!
Se hai progettato bene la struttura delle tabelle non dovresti avere
problemi a fare quella query.
La nuova tabella gruppi non va in JOIN. La metti nella query senza
relazioni e ne usi i campi per impostare i criteri. (potrebbe richiedere
un po' di tempo per l'esecuzione, a seconda di quanti gruppi definisci,
perchè fa il prodotto cartesiano tra la tbl gruppi e le altre quindi
calcolerà un sacco di record che poi verranno filtrati dai criteri)
Poi fai un raggruppamento per IDgruppo, la media del numero dipendenti e
la somma del fatturato.
Non restituirà tutti i gruppi ma solo quelli in cui ricade qualche azienda.
Se li vuoi tutti bisogna usare una seconda query che prenda i risultati
della prima e li combini in outer join con la tabella gruppi.
E' difficile darti una risposta precisa senza sapere quante tabelle hai e
dove sono i dati (n° dipendenti e fatturato).
Hai una tabella aziende? Una fatture e una dettagli fatture, o solo una
fatture col totale in un campo?
Namor


 fatture col totale in un campo?
Sai che non ho mai fatto query dove una tabella non è in relazione con le
altre? Mi apri nuove prospettive! Se ho capito bene il risultato saranno i
record restituiti dalla query ripetuti per ogni gruppo della tabella non
collegata e poi filtrati in base alle righe di quest'ultima. 
Ottimo, solo che sicuramente non è efficiente e secondo me non rispetta lo
standard di progettazione query, o mi sbaglio? Si usano spesso query di
questo tipo o si tratta di casi particolari?
Cmq per quanto riguarda la struttura non ci sono problemi, la tabella
clienti riporta l'ultimo dato relativo ai dipendenti e fatturato, quindi
mi basta usare quella. Voglio provare per testare le prestazioni.
Grazie dell'idea.
Ciao


"Diego Lotti" <diego...@NOSPAMiol.it> ha scritto nel messaggio
news:bifivq$r9k$1...@news.newsland.it...

Come tutte le soluzioni, si usano quando ce n'è bisogno, e se non si trova
qualcosa di più semplice e/o più veloce e/o più..... meglio! Devo dire che
non mi capita spesso di fare query senza join. Sono per usi particolari,
come in una richiesta di qualche giorno fa in cui si volevano calcolare
tutte le permutazioni di vari caratteri (a,b,c = aaa, aab, aac, aba, abb,
abc, ecc...)
Prova e vedi cosa succede. Ma prova anche a studiarti bene le opzioni di
raggruppamento dei report, che sono studiate apposta per risolvere questo
tipo di problemi.Magari trovi una soluzione più semplice e più "pulita".
Namor