Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[MySQL 5.0] Help su select

0 views
Skip to first unread message

Peca's

unread,
Sep 10, 2008, 5:26:40 AM9/10/08
to
Salve a tutti,

mi aiutate, se potete, a scrivere la seguente query?

ho una tabella(tab1):

ID | ID_Prod | data_inizio | data_fine
1 | 1 | 20080601 | 20081231
2 | 1 | 20080501 | 20081030
3 | 1 | 20070501 | 20071130

...

I campi data inizio e data fine definiscono la scadenza di un prodotto.
Ma nella prima riga il prodotto vale 6 mesi e nella seconda il medesimo
prodotto vale 5 mesi e si parla di periodi accavallati. Questo nella mia
tabella può accadere spesso e devo porre rimedio con degli alert.

Ora vorrei creare una select che mi indichi quale ID sgarra dicendo che
"il prodotto ha più periodi di inizio e fine inseriti". Relativi
comunque all'anno corrente.

Se vedete le date si accavallano. Mi potreste aiutare?

Io pensavo:

"select id, id_prod where year(data_inizio) = year(now) and
year(data_fine) = year(now) and ..."

Boh poi non so che scrivere... Qualche help?

Grazie!

The man with two watches

unread,
Sep 10, 2008, 3:47:08 PM9/10/08
to
"Peca's"

> Ma nella prima riga il prodotto vale 6 mesi e nella seconda il medesimo
> prodotto vale 5 mesi e si parla di periodi accavallati.

Il termine giusto e` intervalli; un intervallo e` il tempo realmente
trascorso tra due eventi ancorati sulla linea temporale.
Es. "Tra le 12 e le 14 ho l'intervallo del pranzo".

Un periodo e` invece un concetto astratto e svincolato dalla
linea temporale. "La gravidanza dura un periodo di 9 mesi".

La verifica la puoi fare sia con query sia con vincolo che
blocca intervalli sovrapposti all'inserimento in tabella. Vedi msg.:

http://groups.google.it/group/microsoft.public.sqlserver.programming/browse_thread/thread/693b3390b6675c03/

ciao


aaa

unread,
Sep 16, 2008, 6:36:51 AM9/16/08
to
> http://groups.google.it/group/microsoft.public.sqlserver.programming/browse_thread/thread/693b3390b6675c03/

Scusami la terminologia...

Senti ma se io ho 2 date: dal 01/09/2008 al 31/12/2010 e dovessi vedere
se tra le 2 date è compreso il periodo tra 01/01/2009 e 31/12/2009.

Come faccio?

Grazie!

aaa

unread,
Sep 16, 2008, 6:40:27 AM9/16/08
to
> Come faccio?

Ho scritto così:

[CUT]

(Data_inizio Between 20090101 And 20091231) Or
(Data_termine Between 20090101 And 20091231)

Ma non funzia... idee?

Alessandro Pellizzari

unread,
Sep 16, 2008, 7:53:02 AM9/16/08
to
Il Tue, 16 Sep 2008 12:36:51 +0200, aaa ha scritto:

> Senti ma se io ho 2 date: dal 01/09/2008 al 31/12/2010 e dovessi vedere
> se tra le 2 date è compreso il periodo tra 01/01/2009 e 31/12/2009.
>
> Come faccio?

Qui e` banale logica... :)

where 20090101>20080901 and 20091231<20101231

detto in soldoni. In pratica ti basta vedere se il periodo inizia dopo la
data iniziale e finisce prima della data finale.
Oppure la domanda e` mal posta. :)

Bye.

aaa

unread,
Sep 16, 2008, 8:09:55 AM9/16/08
to
> Oppure la domanda e` mal posta. :)

Si scusami ho mal posto la mia domanda credo... cmq mi è bastato
pranzare per trovare la soluzione :P

Anche io me l'ero mal posta immagino visto che era effettivamente banale
la risposta!!!

A me bastava verificare se l'anno 2009 fosse compreso nel periodo...
quindi ho proprio toppato l'argomento... scusa :(

Grazie cmq per l'interessamento e la risposta!

0 new messages