Newsgroup: it.comp.appl.access
Titolo: Estrapolazione numero max accessi

Salve a tutti,
avrei un problema.
Ho una tabella "Parcheggi" che contiene i dati di accesso ad un
parcheggio.
In particolare [ENTRATA], [USCITA] e [STALLI OCCUPATI].
Dovrei fare estrapolare il massimo di accessi giornalieri.
N) ENT - USC - STALLI (31 marzo 2008)
1) 00.20.11 - 18.15.27 - 1
2) 06.56.58 - 13.54.30 - 1
3) 07.14.48 - 18.35.38 - 1
4) 17.01.01 - 19.32.52 - 1
5) 18.48.08 - 23.59.59 - 5
Il massimo di accessi giornalieri è = 6.
Ho provato verificando ogni singolo accesso ma il risultato risulta
sbagliato (il max = 8).
L'errore sta nel fatto che sommo gli accessi nei record estrapolati:
nell'esempio seguente  il totale dovrebbe essere 3 (invece di 4)
perchè l'ENTRATA delle 6.56.58 non si sovrappone a quella delle
17.01.01
              ENT           USC           QTA
************************************************
<-->          0.20.11       18.15.27       1
<-->          6.56.58       13.54.30       1
<-->          7.14.48       18.35.38       1
<-->          17.01.01      19.32.52       1
************************************************
PERIODO       0.20.11       18.15.27       4
************************************************
Qualche suggerimento?

 ha scritto nel messaggio 
news:e1ca5460-e475-4351...@m3g2000hsc.googlegroups.com...







Qualche suggerimento?
------------------------------
Cosa vuol dire "non si sovrappone"?
L'entrata delle 6.56.58  "non si sovrappone" a nessuna entrata a meno di 
considerare l'uscita, cioè la coppia entrata uscita.
Poi dovresti dire se consideri anche lo stallo, cioè il suo numero, il suo 
identificativo.
Ancora non si capisce cosa vuol dire:
"Dovrei fare estrapolare il massimo di accessi giornalieri"
...rispetto a chi? A quale periodo temporale? A quale stallo?
Anche la frase:
"Il massimo di accessi giornalieri è = 6"
non si capisce (almeno io non lo capisco)...se riferito al mezzo, allo 
stallo o al tempo.
Insomma direi che una migliore esposizione della struttura del db, delle 
finalità e degli sbarramenti, della convalida dei dati o delle condizioni 
imposte al database, sia necessaria.
Ciao, Carlo

 ha scritto nel messaggio 
news:e1ca5460-e475-4351...@m3g2000hsc.googlegroups.com...







Qualche suggerimento?
--------------------------------------------------------------------------
Risposta :
--------------------------------------------------------------------------
si... una risposta c'è, QUOTO Carlo...
quel che hai scritto non è affatto chiaro...
Dici ad Es. [ENTRATA], [USCITA] e [STALLI OCCUPATI], ma non vedo data... 
solo ora...
poi gli STALLI che sono?...
poi, i raggruppamenti e i controlli su cosa li fai?
poi leggo 5 registrazioni, ma dici che il risult max dovrebbe essere 6 se 
pur da tua routine (che non capisco te ne tovi 8), quanto poi schematizzi 
PERIODO 4....
aggiungi elementi chiari alla tua descrizione e vedremo...
-- 
---
Ciao
Pablitomf

Grazie per l'interessamento.
All'interno di un giorno, 31 marzo in questo caso, devo estrapolare il
numero massimo di stalli occupati.
Per sovrapposizione intendo entrata ed uscita:
ent.  usc. stalli
1:00 - 5:00 - 1
4:00 - 7:00 - 1
max stalli occupati = 2
presenze = 2
ent.  usc. stalli
1:00 - 5:00 - 1
6:00 - 7:00 - 1
max stalli occupati = 1
presenze = 2
ent.  usc. stalli
1:00 - 5:00 - 1
4:00 - 8:00 - 1
6:00 - 7:00 - 1
max stalli occupati = 2
presenze = 3
Gli stalli non sono identificati univocamente e non ci sono altri
vincoli (in questo contesto)

 ha scritto nel messaggio 
news:590aa709-7946-481d...@y21g2000hsf.googlegroups.com...

Ormai ne sono sicuro: si tratta di un pesce d'aprile!
Sarò tonto ma continuo a non capire.
Ciao, Carlo 

 Sarò tonto ma continuo a non capire.
Non credo che tu sia tonto, ma cosa non si capisce?
questi è un esempio di possibile combinazione
giorno 31/03/2008
ent.  usc. stalli
1:00 - 5:00 - 1
4:00 - 8:00 - 1
6:00 - 7:00 - 1
max stalli occupati contemporaneamente = 2
presenze totali = 3
Per sapere la situazione in un orario preciso faccio una query ed
ottengo il giusto risultato (ora_entrata<=4:00 and ora_uscita>=4:00
and giorno=31/03/2008)
Ma se non ho un orario di riferimento ma solo il giorno come faccio?
Dovrei fare un ciclo di questo tipo:
for giorno=01/03/2008 to 31/03/2008 (per "ciclare" un mese)
	max_stalli=0
	for ora=0 to 23
		for min=0 to 59
			for sec=0 to 59
				(ora_entrata<=ora+min+sec and ora_uscita>=ora+min+sec and
gg=giorno)
				if max_stalli<rs.recordcount then max_stalli=rs.recordcount
			next
		next
	next
next
sono 31.536.000 query per anno oppure 2.678.400 per mese
così funziona, ma diventa ingestibile (su una tabella di circa 100.000
record anno) ...
spero di essere stato più chiaro

 next

 Sarò tonto ma continuo a non capire.
Non credo che tu sia tonto, ma cosa non si capisce?
questi è un esempio di possibile combinazione
giorno 31/03/2008
ent.  usc. stalli
1:00 - 5:00 - 1
4:00 - 8:00 - 1
6:00 - 7:00 - 1
max stalli occupati contemporaneamente = 2
presenze totali = 3
--------------------------------------------
Sulle presenze tutto ok e forse non c'era bisogno di nominarli gli stalli 
visto che mi sembra poco possibile che un'auto occupi più di uno stallo...o 
no? Una coppia Ent Usc = 1 stallo, quindi basterebbe contare le coppie.
Per il resto alcune domande:
la coppia Ent Usc è sempre presente?
in che formato (hh.mm.ss?)
sulla stessa riga della coppia è presente anche la data?
l'accodamento dei nuovi valori come avviene? Mano mano che il cliente 
entra/esce?
il calcolo quando va fatto? Contemporaneamente all'entrata, all'uscita o 
solo dopo l'uscita?
è possibile aggiungere un campo alla tabella?
Queste domande servono a stabilire se è possibile fare una cosa del genere:
supponiamo di avere la prima auto che ha "marcato" lo scontrino di entrata 
ma non quello di uscita;
la seconda auto che entra con un tempo successivo sarà certamente 
contemporanea alla precedente se questa non ha marcato l'uscita...segno 2 
nel nuovo campo aggiunto(o variabile o campo in una tabella altra); arriva 
una terza auto, marca il tempo di entrata e ancora non è uscita nessuna 
auto...segno 3 nel campo aggiunto; ora va via la prima e segno il tempo di 
uscita e mettendo 2 nel nuovo campo aggiunto e via di seguito.
Il max del giorno per il campo aggiunto dovrebbe darmi la contemporaneita 
massima. Oppure il valore del campo nella tabella di "conteggio" mi darà il 
max di contemporaneita.
Questo modo di procedere prevede un ID unico per ogni scontrino/Auto/Entrata 
emesso in modo da assegnare in modo inequivocabile l'uscita.
In pratica ogni riga, ogni record riporta la situazione reale in quel 
momento.
Il ragionamento l'ho fatto "al volo" e non escludo possibili errori...fai 
una valutazione e fammi sapere.
Ciao, Carlo 

 presenze totali = 3
Ho guardato sul vocabolario per capire cosa intendessi con
"stalli"... :-) e l'esempio non è che aiuta molto ad analizzare il
problema.
Mi pare che tu voglia sapere quante sovrapposizioni di orari si
verificano ogni giorno, è così?
Direi che la sovrapposizione si ha quando l'entrata di una riga è >=
l'entrata E <= dell'uscita di un'altra; e quindi potresti risparmiare
qualche milione di query facendo questa verifica per ogni record ed
aggiungendo una colonna contenente 1 se il record è sovrapposto, 0 se
non lo è.
Poi raggruppi per giorno e a quel punto dovrebbe bastare una somma per
avere la risposta.
Ti lascio volentieri l'implementazione :-)
ciao,
Panathos

per CARLO
Sulle presenze tutto ok e forse non c'era bisogno di nominarli gli
stalli
visto che mi sembra poco possibile che un'auto occupi più di uno
stallo...o
no? Una coppia Ent Usc = 1 stallo, quindi basterebbe contare le
coppie.
--> gli stalli servono perchè se entra un pulmann occupa 5 stalli
(visto che non ci sono spazi riservati ai pulmann)
la coppia Ent Usc è sempre presente? in che formato (hh.mm.ss?)
--> SI
sulla stessa riga della coppia è presente anche la data?
l'accodamento dei nuovi valori come avviene? Mano mano che il cliente
entra/esce?
--> SI
il calcolo quando va fatto? Contemporaneamente all'entrata, all'uscita
o solo dopo l'uscita?
--> quando viene richiesto dall'operatore
è possibile aggiungere un campo alla tabella?
--> SI ma non toglierli
la seconda auto che entra con un tempo successivo sarà certamente
contemporanea alla precedente se questa non ha marcato
l'uscita...segno 2
nel nuovo campo aggiunto(o variabile o campo in una tabella altra);
arriva
una terza auto, marca il tempo di entrata e ancora non è uscita
nessuna
auto...segno 3 nel campo aggiunto; ora va via la prima e segno il
tempo di
uscita e mettendo 2 nel nuovo campo aggiunto e via di seguito.
Il max del giorno per il campo aggiunto dovrebbe darmi la
contemporaneita
massima. Oppure il valore del campo nella tabella di "conteggio" mi
darà il
max di contemporaneita.
--> provo questa strada (la mia idea era di calcolare tutto alla fine:
come avrai notato, funziona, ma diventa ingestibile)




1)Come del resto suggeriva CarloCostarella...
Aggiungi tabella, con i campi IdGiorno, PresenzeGiornaliere e
MAXPresenzeGiornaliere
Ogni ingresso
Aggiungi 1 in tuo campo PresenzeGiornaliere
se PresenzeGiornaliere>MaxPresenzeGiornaliere
MaxPresenzeGiornaliere=PresenzeGiornaliere
Ogni uscita
Sottrai 1 in tuo campo PresenzeGiornaliere
In questo caso memorizzi in tabella valori calcolati, ma può essere
uno di quei casi in cui vale la pena
2) Il calcolo che facevi tu (e che dicevi funzionare) secondo per
secondo su un periodo, lo fai solo per ogni valore di ingresso ed
uscita del periodo stesso (ovvero quando è che sia cambiato qualcosa)
Dal basso della mia 'gnoranza
e consapevole del fatto che "se ho sbagliato Voi mi corrigerete"
F.

la soluzione che ho trovato è questa:
1) creo una tabella di riepilogo [totali] con due campi, [giorno] e
[max_accessi]
2) ad ogni accesso eseguo una query che conta gli stalli occupati
3) nelle tabella inserisco i dati verificando se il totale del punto 2
sono maggiori di [max_accessi]
fine della fiera salvo idee migliori
grazie a tutti per la collaborazione

grazie a tutti per la collaborazione
Prego non c'č di chč...
Ciao, Carlo