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
[SQL2005]Controllo di sovrapposizione di periodi
mercoledì 23 settembre 2009 - 16.49
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Teech
Profilo
| Expert
573
messaggi | Data Invio:
mer 23 set 2009 - 16:49
Mi stò scervellando ma non capisco se si può fare e come...
Ho una tabella che contiene, fra gli altri, 2 campi datetime (Inizio As datetime e Fine As datetime).
Vorrei trovare un modo per controllare gli inserimenti e le variazioni di questi 2 campi di modo che i periodi non si sovrappongano fra di loro
Ad esempio, se ho la tabella compilata nel seguente modo:
Periodo1 - 01/01/2009 - 31/01/2009
Periodo 2 - 01/02/2009 - 15/03/2009
Periodo3 - 01/05/2009 - 31/05/2009
Vorrei che i seguenti inserimenti diano i risultati riportati a fianco
01/03/2009 - 31/03/2009 --> inserimento fallito in quanto sovrapposto al Periodo2
16/03/2009 - 31/03/2009 --> inserimento riuscito
Ovviamente il controllo dovrebbe essere anche in fase di variazione dei dati.
Questo mi serve per un programma che stò facendo in .NET ma vorrei evitare di ciclare tutte le volte la tabella da codice in quanto, con l'aumentare dei dati le prestazioni calerebbero...
Avete un consiglio su come agire direttamente in SQL?
Grazie
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
speedx
Profilo
| Junior Member
111
messaggi | Data Invio:
mer 23 set 2009 - 17:02
be direi che non c'è bisogno di ciclare tutte le volte, ma creare una funzione che controllo se il periodo di inserimento è compreso in uno già presente.
io farei una select che restituisce un valore > 0 se se la data inzio che vuoi inserie è già presente tipo:
SELECT COUNT(*) FROM Tabella WHERE datainserimento BETWEEN Datainizio AND DataFine
idem per datafine se ti serve...
Nel caso di molti record aggiungerei un indice coprente le colonne.
//// Marcello C.
rigutini
Profilo
| Newbie
11
messaggi | Data Invio:
mer 23 set 2009 - 17:13
ma nel caso il cui il nuovo periodo comprendesse tutto il periodo già immesso,..
nè la data di inizio nè quella di fine sarebbero comprese nell'intervallo esistente ;P
Forse devi escludere entrambi i casi:
Che la Nuova DataInizio sia compresa negli intervalli esistenti
e
che Tutte le EsistentiDateIniziali Non siano comprese nel nuovo periodo!
...
Spero!
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 !