Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-06-2008, 13:26   #1
Dark Phoenix
Member
 
L'Avatar di Dark Phoenix
 
Iscritto dal: May 2007
Città: Roma
Messaggi: 93
[SQL] SELECT MAX(id) - voglio che ritorni 0 in caso non ci siano tuple

Ciao a tutti,

Per motivi che non sto a spiegare vorrei che una query del tipo:
Codice:
SELECT MAX (id)
FROM t;
ritorni 0 nel caso non siano presenti tuple nella relazione t, logicamente in questo caso la funzione max ritorna "null", come poi è giusto che sia. Mentre a me serve che ritorni 0.

Il vincolo che debbo seguire è che l'eventuale sistema di traduzione da "null" a 0 deve restare in SQL standard o comunque essere molto aderente allo standard.
Non posso aggirare l'ostacolo aggiungendo una tupla fittizia con id=0.

Grazie a tutti per l'aiuto
__________________
Più ti avvicini alla luce, più la tua ombra diventa grande (Kingdom Hearts - Walt Disney e Squaresoft, ma la mano è della Squaresoft)
Dark Phoenix è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2008, 14:03   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quasi tutti gli Engine hanno la funzione CASE.

Potresti quindi fare:

Codice:
SELECT CASE WHEN MAX(pippo) IS NULL THEN 0 ELSE MAX(pippo) END AS max_pippo
   FROM tabella
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2008, 15:54   #3
Riordian
Senior Member
 
L'Avatar di Riordian
 
Iscritto dal: Mar 2006
Città: Genova
Messaggi: 2457
più semplicemente
potrebbe funzionare pure così
Codice:
SELECT ISNULL(MAX(id),0)
   FROM tabella
__________________
tag XBOX live Aldair74
Nick PSNRiordian
Affari conclusi con: Anf3t4m1n Krocca magomagnani amoredipippa mone_82 raszagale bizzy89 Andrew_db

Ultima modifica di Riordian : 17-06-2008 alle 16:03.
Riordian è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2008, 16:18   #4
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da Riordian Guarda i messaggi
più semplicemente
potrebbe funzionare pure così
Codice:
SELECT ISNULL(MAX(id),0)
   FROM tabella

gia', ma ISNULL e' meno standard.
Sotto Oracle e' NVL
Sotto MySql c'e' una IsNull ma fa qualcosa di diverso (ritorna true o false)
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 17-06-2008, 16:31   #5
Riordian
Senior Member
 
L'Avatar di Riordian
 
Iscritto dal: Mar 2006
Città: Genova
Messaggi: 2457
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
gia', ma ISNULL e' meno standard.
Sotto Oracle e' NVL
Sotto MySql c'e' una IsNull ma fa qualcosa di diverso (ritorna true o false)
infatti il potrebbe era dovuto proprio al fatto che poteva non soddisfare appieno la sua richiesta rispetto al codice suggerito da te
__________________
tag XBOX live Aldair74
Nick PSNRiordian
Affari conclusi con: Anf3t4m1n Krocca magomagnani amoredipippa mone_82 raszagale bizzy89 Andrew_db
Riordian è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2008, 07:26   #6
Dark Phoenix
Member
 
L'Avatar di Dark Phoenix
 
Iscritto dal: May 2007
Città: Roma
Messaggi: 93
Grazie è perfetto
__________________
Più ti avvicini alla luce, più la tua ombra diventa grande (Kingdom Hearts - Walt Disney e Squaresoft, ma la mano è della Squaresoft)
Dark Phoenix è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:23.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v