26 messaggi dal 14 febbraio 2003
Immaginate di avere un campo testo x e un campo categoria y da una tabella xy, io devo ordinare tutti i risultati di una query in base all'esistenza o meno del campo x e poi per il campo y.
I codice povero :
sSql = "select * from xy where ...condizioni .... ORDER BY ...
io ho provato a metterci :
ORDER BY x <> "", y DESC e non va
ORDER BY len(x) > 0, y DESC e non va

Ho esaurito il mio sapere ... qualcuno di voi mi può aiutare?
30 messaggi dal 05 ottobre 2001
non capisco "esistenza o meno"????
intendevi "in base al valore in x che potrebbe essere nullo"?
dato che partiamo dal presupposto che il campo esista, altrimenti la select non avrebbe un senso, e partendo dal presupposto che il problema sia il valore null non l'esistenza o meno del campo, la soluzione può essere utilizzare un CONVERT oppure un ISNULL nella select (solo per SQL server, naturalmente), ad esempio
... ORDER BY IsNull(x,''), y DESC
(se voglio mettere le x vuote all'inizio)
26 messaggi dal 14 febbraio 2003
Mi sono spiegato male, infatti non aveva senso quello che ho scritto, provo a rispiegarmi così vediamo se riuscite a capirmi meglio!
Io ho il campo x (testo) un campo y(ancora testo) e z(numerico) .
Ho una tabella xyz.
Faccio subito un esempio così ... forse va meglio!
1) xyz (Una tabella contenente hotels)
2) x (nome hotel)
3) y (email dell'hotel)
4) z (categoria/stelle)

Problema:
Devono apparire per primi gli hotel con la email, ordinati per categoria e per nome!

Spero questa volta di essermi spiegato, my brain is heat :-P.
Grazie a tutti!
107 messaggi dal 26 marzo 2001
x = nome
y = email
z = categoria

(
select * from tabella where y is not null order by z asc, x asc
)
union
(
select * from tabella where y is null order by z asc, x asc
)


praticamente sono 2 query in una perchè la condizione di email vuota non è una condizione di ordinamento ma di ricerca.
ti conviene mettere il tutto in una vista, e fare select * from mia vista oppure fai le 2 query distinte e le esegui separatamente

ciao e a presto
Modificato da ereale il 09 maggio 2003 09.47 -

___________________
Emilio Reale
MCP ID: 3355694 MCSD MCDBA MCSE
26 messaggi dal 14 febbraio 2003
Questa è la query che do in pasto al mio sql server 2000

(SELECT * FROM xyz where x is not null and city='xxx' order by y,z)
UNION ALL
(SELECT * from xyz where city='xxx' and x is null order by y,z)

Questa è la sua risposta!
Server: messaggio 156, livello 15, stato 1, riga 1
Sintassi non corretta in prossimità della parola chiave 'order'.
Server: messaggio 156, livello 15, stato 1, riga 3
Sintassi non corretta in prossimità della parola chiave 'order'.

mmmmmmmmmmmm

comunque togliendo gli order by funziona, dovrei essere vicino alla risoluzione dei miei problemi grazie a voi, vi chiedo solo l'ultimo sforzo!
Grazie ancora

26 messaggi dal 14 febbraio 2003
Cari amici, ho risolto, mi sono scervellato fino poi a pensare ad un if ... gli if ti risolvono sempre la vita!
W GLI IF
select *, (case when x is null then 0 else 100 end) as ordinamento
from xyz 
where city='xxx' 
order by ordinamento desc, y desc,z 


Grazie mille a tutti voi per aver perso tempo per me!
Grazie ancora

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.