Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Gestione di una where
mercoledì 06 ottobre 2010 - 13.03
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
mer 6 ott 2010 - 13:03
Raga,
per ora vi posto solo il codice della mia where e vi spiego il mio problema, poi se non bastasse vi posto anche dei dati di esempio.
WHERE (Ap.Datafineattivita = '01-01-9999' Or Ap.Datafineattivita BETWEEN '01-05-2010' AND '31-05-2010') AND
(Ap.data1 BETWEEN '01-05-2010' AND '31-05-2010') OR (Ap.data2 BETWEEN '01-05-2010' AND '31-05-2010') OR
(Ap.data3 BETWEEN '01-05-2010' AND '31-05-2010') OR (Ap.data4 BETWEEN '01-05-2010' AND '31-05-2010') OR
(Ap.data5 BETWEEN '01-05-2010' AND '31-05-2010') OR (Ap.data6 BETWEEN '01-05-2010' AND '31-05-2010') OR
(Ap.data7 BETWEEN '01-05-2010' AND '31-05-2010') OR (Ap.data8 BETWEEN '01-05-2010' AND '31-05-2010')
in pratica una mia query ha questa where...ma nn mi funziona come vorrei ossia questa query gestisce la selezione di record in base a delle date. in questo codice come periodo di selezione vi è maggio.
la where deve fare dei controlli in ordine ossia se soddisfa i requisiti della datafineattività può passare alle date successive..però con questo codice se scrivo datafineattività= 01-03-2010 i record vengono ugualmente presi perchè questi periodo nella tabella si trova tra le colonne data1 e data2...invece il record non deve essere preso perchè la datafineattività non è uguale a 01-01-9999 oppure non rientra tra il periodo 01-05-2010 - 31-05-2010...sbaglio sicuramente la gestione delle And...OR ma nn riesco a trovare l'inchippo.
ciao e grazie
Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
ma_di
Profilo
| Junior Member
163
messaggi | Data Invio:
mer 6 ott 2010 - 14:03
>WHERE (Ap.Datafineattivita = '01-01-9999' Or Ap.Datafineattivita
>BETWEEN '01-05-2010' AND '31-05-2010') AND
>(Ap.data1 BETWEEN '01-05-2010' AND '31-05-2010')
Vista così la where si comporta correttamente, perchè la OR ti esclude il test su 01-01-9999; 01-03-2010 non è uguale a 01-01-9999, ma è between 01-05-2010 and 31-05-2010, quindi il risultato è TRUE, come è TRUE su tutte le altre seguenti.
Non conoscendo la filosofia della ricerca è difficile essere più precisi, ma a prima vista sembra esserci un errore logico di interpretazione di Ap.Datafineattività, piuttosto che sula gestione delle OR e AND.
Ciao.
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
mer 6 ott 2010 - 14:16
prova cosi :
WHERE (Ap.Datafineattivita = '01-01-9999' and Ap.Datafineattivita BETWEEN '01-05-2010' AND '31-05-2010') or
Ap.Datafineattivita = '01-01-9999' and (Ap.data1 BETWEEN '01-05-2010' AND '31-05-2010') OR
Ap.Datafineattivita = '01-01-9999' and (Ap.data2 BETWEEN '01-05-2010' AND '31-05-2010') OR
Ap.Datafineattivita = '01-01-9999' and (Ap.data3 BETWEEN '01-05-2010' AND '31-05-2010') OR
Ap.Datafineattivita = '01-01-9999' and (Ap.data4 BETWEEN '01-05-2010' AND '31-05-2010') OR
Ap.Datafineattivita = '01-01-9999' and (Ap.data5 BETWEEN '01-05-2010' AND '31-05-2010') OR
Ap.Datafineattivita = '01-01-9999' and (Ap.data6 BETWEEN '01-05-2010' AND '31-05-2010') OR
Ap.Datafineattivita = '01-01-9999' and (Ap.data7 BETWEEN '01-05-2010' AND '31-05-2010') OR
Ap.Datafineattivita = '01-01-9999' and (Ap.data8 BETWEEN '01-05-2010' AND '31-05-2010')
DINOXET
__________________________________________
impossible is only a word
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !