Query con unione e scartamento campi

lunedì 23 maggio 2011 - 09.03
Tag Elenco Tags  MySQL 5.5  |  MySQL 5.1  |  MySQL 5.0

dotnetnapo Profilo | Junior Member

Buongiorno a tutti,
vi espongo il mio problema sperando nella soluzione che vorrei.
Ho una tabella in cui vengono inserite le date di partenza di due tipologie di viaggi, quelli con DATE FISSE e quelli con DATE A RICHIESTA.
Quelli con date fisse hanno il loro campo DATA_PARTENZA, quelli con date variabili hanno la stagionalità VALIDO_DAL e VALIDO_AL

La tabella generata è la seguente, il tour 1 ha data fissa, il tour 2 ha data variabile

NomeTour - DataPartenza - ValidoDal - Fino Al
------------------------------------------------------
Tour 1 | 2005-08-25 | 0000-00-00 | 0000-00-00 |
Tour 2 | 0000-00-00 | 2011-06-01 | 2011-12-31 |

Il problema è il seguente: vorrei generare in fase di SELECT una query con 2 soli campi senza ricorrere a UNION che ho già fatto ma mi sembra macchinoso

Esempio

NomeTour - DataPartenza - ValidoDal - Fino Al
------------------------------------------------------
Tour 1 | 2005-08-25 | 0000-00-00 |
Tour 2 | 2011-06-01 | 2011-12-31 |

Grazie

alx_81 Profilo | Guru

>Buongiorno a tutti,
ciao

>Quelli con date fisse hanno il loro campo DATA_PARTENZA, quelli
>con date variabili hanno la stagionalità VALIDO_DAL e VALIDO_AL
>La tabella generata è la seguente, il tour 1 ha data fissa, il
>tour 2 ha data variabile
>
>NomeTour - DataPartenza - ValidoDal - Fino Al
>------------------------------------------------------
>Tour 1 | 2005-08-25 | 0000-00-00 | 0000-00-00 |
>Tour 2 | 0000-00-00 | 2011-06-01 | 2011-12-31 |
>
>NomeTour - DataPartenza - ValidoDal - Fino Al
>------------------------------------------------------
>Tour 1 | 2005-08-25 | 0000-00-00 |
>Tour 2 | 2011-06-01 | 2011-12-31 |
probabilmente potresti cambiare specifica di modello, usando sempre gli stessi campi e ricorrendo a flag. inoltre, vedendo gli 0000, sembra che tu non abbia usato un tipo di dato datetime.
Ti esorto a scegliere SEMPRE il tipo di dato corretto per l'informazione contenuta, e non stringhe.
Al di là di questo, per evitare di cambiare, puoi usufruire della CASE.
Una cosa tipo:
SELECT DataInizio = CASE WHEN DataPartenza = '0000-00-00' THEN ValidoDal ELSE DataPartenza END , DataFine = CASE WHEN DataPartenza = '0000-00-00' THEN FinoAl ELSE ValidoDal END NomeTour FROM ....

>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Grazie era quello che cercavo,
a proposito del'impostazione che mi hai suggerito, il campo è settato come Date e la data 0000-00-00 la inserisco come valore di default che tipo di data generica devo inserire per poi richiamarla come dato al posto di 0000-00-00 ?
Di nuovo grazie

alx_81 Profilo | Guru

>Grazie era quello che cercavo,
>a proposito del'impostazione che mi hai suggerito, il campo è
>settato come Date e la data 0000-00-00 la inserisco come valore
>di default che tipo di data generica devo inserire per poi richiamarla
>come dato al posto di 0000-00-00 ?
non avevo visto che si tratta di mysql. A posto così.

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Resta sempre il problema che i due campi virtuali che genero DATAINIZIO e DATAFINE sembra non abbiano impostazione Date infatti se vado a fare una select con opzione >= o <= a CURDATE() per esempio non ritorna valori corretti

alx_81 Profilo | Guru

>Resta sempre il problema che i due campi virtuali che genero
>DATAINIZIO e DATAFINE sembra non abbiano impostazione Date infatti
>se vado a fare una select con opzione >= o <= a CURDATE()
>per esempio non ritorna valori corretti
allora applica la conversione prima della case, con una convert in date.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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 !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5