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
SQL query o stored procedure per ordinamento secondo 2 date
mercoledì 30 giugno 2010 - 10.51
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
cabron
Profilo
| Newbie
6
messaggi | Data Invio:
mer 30 giu 2010 - 10:51
ciao a tutti, sono nuovo e ho già trovato molte cose interessanti su questo forum..
sto lavorando su sql 2005 e non arrivo a trovare una soluzione per fare una query o una stored procedure.
in pratica ho una tabella dei progetti, trai i vari campi son presenti data d'inizio e data di fine, vorrei un ordinamento del seguente tipo
prima progetti più recenti (data inizio più recente) e senza data di fine, poi progetti con data di fine (quindi conclusi)
avete qualche idea?
grazie mille!
carloalberto
Profilo
| Junior Member
166
messaggi | Data Invio:
mer 30 giu 2010 - 10:57
>prima progetti più recenti (data inizio più recente) e senza
>data di fine, poi progetti con data di fine (quindi conclusi)
>avete qualche idea?
prova a fare le due select, separate, con un campo fisso 'priorita', nella prima metti 1, nella seconda metti 2 ordinate come vuoi tu.
poi metti in UNION le due select e ordini tutto su 'priorita', dovresti ottenere quello che vuoi
>grazie mille!
di nulla
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 30 giu 2010 - 11:14
>ciao a tutti,
ciao e benvenuto su dotnethell.it!
>in pratica ho una tabella dei progetti, trai i vari campi son
>presenti data d'inizio e data di fine, vorrei un ordinamento
>del seguente tipo
>prima progetti più recenti (data inizio più recente) e senza
>data di fine, poi progetti con data di fine (quindi conclusi)
>avete qualche idea?
Potrebbe essere fattibile tutto tramite un semplice statement, ma dovresti essere un po' più preciso nei dettagli, affinchè possiamo procedere con risposte mirate.
Al fine di questo, dovresti passarci la CREATE della tabella (o la struttura), qualche riga di esempio e il risultato che vorresti ottenere.
>grazie mille!
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
cabron
Profilo
| Newbie
6
messaggi | Data Invio:
mer 30 giu 2010 - 11:16
fatto e ha funzionato.. avevo già provato con la union ma non avevo proprio pensato a mettere un campo fisso..
alla fine ho fatto un order by priorita, data inizio e viene proprio come voglio io..
una domanda visto che in una view non posso fare un order by faccio una stored che prende le 2 viste e mi fa la union, può andare bene? o è meglio inserire tutto il codice nella stored?
di nuovo grazie mille!!
carloalberto
Profilo
| Junior Member
166
messaggi | Data Invio:
mer 30 giu 2010 - 11:32
>di nuovo grazie mille!!
di nulla ...
ps non ti scordare di cliccare su 'risposta accettata' :-)
cabron
Profilo
| Newbie
6
messaggi | Data Invio:
mer 30 giu 2010 - 12:45
di nuovo grazie a entrambi!
carloalberto
Profilo
| Junior Member
166
messaggi | Data Invio:
mer 30 giu 2010 - 12:59
chiedo perdono non avevo visto questa parte ..
>una domanda visto che in una view non posso fare un order by
>faccio una stored che prende le 2 viste e mi fa la union, può
>andare bene? o è meglio inserire tutto il codice nella stored?
>di nuovo grazie mille!!
credo che sia meglio fare in unico statement, per questioni di performance ..
quindi ... metterei tutto in una unica stored
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 30 giu 2010 - 13:01
>credo che sia meglio fare in unico statement, per questioni di
>performance .. quindi ... metterei tutto in una unica stored
proprio per questo consiglio a chiunque faccia richieste di questo tipo, di passare sempre la create, qualche dato e l'esempio.
Così è più semplice essere mirati con l'help
--
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
cabron
Profilo
| Newbie
6
messaggi | Data Invio:
mer 30 giu 2010 - 13:27
@alx_81 prossima volta sarà fatto!! :D
@carloalberto si alla fine ho fatto così ;)
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 30 giu 2010 - 14:25
>chiedo perdono non avevo visto questa parte ..
>
>>una domanda visto che in una view non posso fare un order by
>>faccio una stored che prende le 2 viste e mi fa la union, può
>>andare bene? o è meglio inserire tutto il codice nella stored?
>>di nuovo grazie mille!!
>
>credo che sia meglio fare in unico statement, per questioni di
>performance ..
>quindi ... metterei tutto in una unica stored
Ciao,
Le viste non sono altro che comandi di SELECT salvati nel db.
Quando richiami una vista in realtà viene "esploso" il comando ed eseguito, di conseguenza è equivalente eseguire la vista o il comando di SELECT dato che a differenza delle stored procedure, in entrambi i casi verrà generato un nuovo piano di esecuzione.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
carloalberto
Profilo
| Junior Member
166
messaggi | Data Invio:
mer 30 giu 2010 - 15:22
>Le viste non sono altro che comandi di SELECT salvati nel db.
>Quando richiami una vista in realtà viene "esploso" il comando
>ed eseguito, di conseguenza è equivalente eseguire la vista o
>il comando di SELECT dato che a differenza delle stored procedure,
>in entrambi i casi verrà generato un nuovo piano di esecuzione.
Ciao Lorenzo, per curiosità didattica ....
non ho capito pero cosa consigli ... meglio la stored o no? :-)
ciao e grazie
cabron
Profilo
| Newbie
6
messaggi | Data Invio:
mer 30 giu 2010 - 15:24
lbenaglia grazie per la spiegazione, mi associo a carloalberto per la domanda.. ;)
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 1 lug 2010 - 12:48
>non ho capito pero cosa consigli ... meglio la stored o no? :-)
Le stored procedures hanno la particolarità di generare 1 execution plan per ogni contesto di sicurezza, ovvero se il medesimo client o client che condividono la medesima connection string (alla lettera!) richiamano una sp, SQL Server genererà 1 solo piano di esecuzione che verrà cachato in memoria.
In questo modo le chiamate successive saranno estremamenti più veloci.
Inoltre la sp possono incapsulare una logica di business ben più compessa rispetto alle viste il cui body può essere costituito solo da 1 o più comandi di SELECT.
Quindi, è sempre opportuno accedere ad un db utilizzando le sp, anche se le viste assicurano un ottimo sistema per astrarre l'accesso alle singole tabelle e memorizzare in forma permanente i comandi di SELECT (magari complessi) lato server.
>ciao e grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
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 !