Newsgroup: it.comp.appl.access
Titolo: querry con intervalli di tempo

Il problema è piu complesso di quello che si evince dall'oggetto:
hp: una tabella con tre campi
nome
data inizio
data fine
voglio impostare una querry parametrica immettendo io inizio e fine e questo
è semplice, il problema è impostare un criterio che mi restituisca tutti i
nomi per i quali il confronto tra il loro periodo di tempo e quello che ho
impostato io abbiano in comune almeno un giorno esempio:
luca  -  1/1/00 - 2/2/00
io fisso il periodo : 1/2/00 - 10/2/00
poichè i due intervalli hanno in comune i giorni 1/2/00 e 2/2/00 , il record
di " Luca " deve essere visualizzato"
non so se si puo vedere la cosa come intersezione di insiemi di giorni
(perche la logica è quella).
Scusate se mi sono dilungato.
Ciao MArcello.

 wrote in message
news:a2m288$4gg$1...@newsreader.mailgate.org...

Forse mi sfugge qualcosa, ma non è sufficiente il criterio datainizio
between periodo1 and periodo2 OR datafine between periodo1 and periodo2?
Alessandro

 Alessandro
Non sono definiti dei periodi, poi i casi che si possono verificare sono
molti e diversi me ne sono accorto praticamente provando e riprovando,
nel senso che definito io un intervallo, può capitare che gli intervalli
definiti nei record siano:
compresi in quello inserito da me nella querri,
piu estesi di quello   ''             ''               ''
si intersecano all'inizio  esempio: 1/1/00 - 30/1/00 nel record ed io
imposto 15/1/00 - 15/2/00
in questo caso si intersecano per una quindicina di giorni, ma non
rientriamo nei due casi precedenti.
Ancora: un esempio
nel record c'è 1/2/00 - 1/3/00
ed io chiedo nella querry 15/1/00 - 15/2/00
in questo caso si intersecano alla fine del mio intervallo ed è comunque
diverso dai casi precedenti.
con un solo criterio non sono riuscito a beccarli tutti e 4.
Spero di essere stato chiaro, per questo mi sembrava più semplice parlare di
insiemi.
Grazie per la risposta  Marcello.

 Alessandro
Ho riguardato meglio quello che mi hai scritto e mi pare che se l'intervallo
nella tabella e più esteso e comprende al suo interno quello definito nella
querry il criterio che mi suggerisci non andrebbe bene (sebbene
l'intersezione dei due intervalli è la massima possibile)  perché le date
non cadrebbero mai nei due intervalli.
Ciao Marcello.

 ha scritto nel messaggio
news:a2m2gr$bb3$1...@fe1.cs.interbusiness.it...

Posto I e F le date Inizio e Fine dei Record,
Posto Iq e Fq le date Inizio e Fine dell'intervallo Selezionato:
    Criteri:
            (I>=Iq) AND (I<=Fq)
            (I<=Iq) AND (F>=Iq)
Ciao ;-)> Mrok

 wrote in message
news:a2m65c$6gm$1...@newsreader.mailgate.org...

Mi pare che i casi possibili siano 6 in tutto (correggimi se sbaglio):
Dati sulla tabella:
1/1/00 - 2/2/00
Criteri scelti:
1) 1/2/99 - 10/2/99
2) 1/12/99 - 10/1/00
3) 10/1/00 - 1/2/00
4) 1/2/00 - 10/2/00
5) 1/2/99 - 10/2/01
6) 1/1/01 - 2/2/01
I casi 1 e 6 (completamente fuori) sono soddisfatti dal mio criterio (cioè
il record non viene selezionato).
I casi 2 e 4 (parzialmente compreso) sono soddisfatti dal mio criterio.
Il caso 3 (completamente compreso) è soddisfatto dal mio criterio.
Resta il caso 5 (il periodo selezionato comprende interamente sia datainizio
sia datafine). Per gestire anche questo caso dovrai usare il seguente
criterio:
datainizio between periodo1 and periodo2 OR datafine between periodo1 and
periodo2 OR (datainizio > periodo1 AND datafine < periodo2)
HTH, Alessandro.

 periodo2 OR (datainizio > periodo1 AND datafine < periodo2)
Rettifica:
datainizio between periodo1 and periodo2 OR datafine between periodo1 and
periodo2 OR (datainizio >= periodo1 AND datafine =< periodo2)
Alessandro

 Ciao ;-)> Mrok
Ciao Mrok grazie per la risposta ma penso che il criterio che mi indichi
sebbene valido non sia sufficiente, infatti se vedi la seconda risposta data
ad Alessandro gli intevalli si possono intersecare  anche in modo diverso
che dal tuo criterio non vengono individuati, ad esempio
può capitare che :
I>=Iq  e F>=Fq e li intervalli si intersecano lo stesso.
Ciao grazie.

 Ciao ;-)> Mrok
Ciao Mrok grazie per la risposta ma penso che il criterio che mi indichi
sebbene valido non sia sufficiente, infatti se vedi la seconda risposta data
ad Alessandro gli intevalli si possono intersecare  anche in modo diverso
che dal tuo criterio non vengono individuati, ad esempio
puņ capitare che :


 Ciao ;-)> Mrok
Ciao Mrok grazie per la risposta ma penso che il criterio che mi indichi


Scusate ma outlook sta dando i numeri , mi chiedevo se si poteva risolvere
il tutto diversamente senza inserire tanti criteri,
Il tutto serve per vedere se i lavoratori interinali (che lavorano solo in
determinati periodi) hanno lavorato in un determinto periodo che si fissa di
volta in volta nelle querry, il problema nasce dal fatto che questi periodi
sono quai casuali infatti, le missioni variano da una settimana a diversi
mesi, e neanche chi mi a chiesto il db mi sapeva indicare con precisione che
cosa voleva :-(
 ciao e grazie ad entrambi


    Contamplato dal Caso I>=Iq AND I<=Fq !!!!!!!!!!!!!!!!!!!


Ma l'hai provata?

 ha scritto nel messaggio
news:a2mchn$9ea$2...@newsreader.mailgate.org...

Scusa vorrei approfondire, Ci 6 Ancora??

 wrote in message
news:a2mchn$9ea$2...@newsreader.mailgate.org...

Perdonami se insisto, ma hai provato l'ultima soluzione da me proposta? Se
non va bene, che cosa non va ESATTAMENTE? Se neppure il cliente (e, di
conseguenza, tu) sa cosa vuole ottenere, non č facile aiutarti...
Ciao.
Alessandro


Scusami tu se non ti ho risposto subito Penso che hai centrato la soluzione,
anche io ero arrivato  a qualcosa del genere
( la tua funziona meglio della mia)  mi chiedevo se esisteva qualcosa di piu
raffinato come avevo scritto all'inizio cioe, se č possibile trattare gli
intervalli di tempo come degli isiemi, infatti se cosě fosse potrei
virtualmente scrivere
(insieme definito nella querry)  intersezione (insiemedefinito per ogni
record)   <> (insieme nullo)
se vale
allora il record č preso
bello č ?
Grazie  Alessandro

 bello č ?
Bello, ma non saprei come raggiungere questi livelli di raffinatezza in SQL.
Per avvicinarmi a quello che hai in mente tu, perň, mi č venuto in mente
un'alternativa. Forse potrebbe funzionare un criterio del genere:
NOT (datainizio > periodo2) AND NOT (datafine < periodo1)
Che ne dici? Probabilmente sarebbe anche piů performante...
Alessandro

> Scusa vorrei approfondire, Ci 6 Ancora??
No purtoppo nom sono sempre connesso, comunque l'ho provata e funziona li
becca tutti ed è anche la più senlla du tutte quelle trovate complimenti
veramente.
Ciao Marcello.

 Alessandro
L'idea di escludera i casi da non prendere forse č migliore  poichč č
sicuramente piů sintetica, la devo provare, cmq anche quella suggerita da
Mrok funzionava bene;
Provo e ti faccio sapere.... non subito se puoi dai un occhiata tra una
giorno voglio provare sia questa che l'altra
Ci metto tempo poichč sono 1500 record  e devo fare un controllo a mano su
ciň che mi restituisce la querry
vuoi mettere la soddisfazione...

 vuoi mettere la soddisfazione...
Non ho fretta ;-)
Però mi sono perso il suggerimento di Mrok: puoi mica ripostarlo? Sai com'è,
non si finisce mai di imparare...
Alessandro

 Alessandro
Certo che posso e con immenso piacere visto che entrambi mi avete dato una
mano
******************************************************************
Posto I e F le date Inizio e Fine dei Record,
Posto Iq e Fq le date Inizio e Fine dell'intervallo Selezionato:
Criteri:
(I>=Iq) AND (I<=Fq)
(I<=Iq) AND (F>=Iq)
Ciao ;-)> Mrok
********************************************************************
l'ho provato a vista con i casi già noti e va bene
Ti faccio una preghiera se leggi il messaggio mi fai un cenno di assenso
così se non lo vedo arrivare te lo
posto nella casella di posta personale.... se c'è :-)
Ciao Marcello
P.S. Chi mi aveva commissionato il lavoro non sa più che pesci prendere gli
ho fatto due querry una
che gli da i lavoratori che hanno lavorato tutti i giorni dell'intervallo e
una per quelli che hanno lavorato almeno
un giorno........ora non mi resta che incassare  .

 ora non mi resta che incassare  .
Auguri!
Ciao.
Alex

 Mi riferisco a NOT (datainizio > periodo2) AND NOT (datafine < periodo1)...
Si funziona ed è anche la più veloce
Ciao Marcello
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG