Newsgroup: it.comp.software.database
Titolo: E' possibile query SQL ordinata?

Ciao a tutti,
faccio una query su un db access da una mia applicazione scritta in Java.
Nel test che sto effettuando dovrei ordinare il Resultset rispetto al primo
campo della tupla che puo' contenere i soli caratteri "w", "b", "m", "a",
"f".
Se io volessi ordinare il ResultSet (con ORDER BY o simili) in modo che
vengano prima le tuple con primo campo pari a "m", poi "b", e cosi' via...
come si puo' fare?
In altre parole devo avere un ordinamento di questo tipo:
"m"
"b"
"w"
"a"
"i"
e dalle mie poche nozioni so che ORDER BY ordina solo in modo alfabetico...
Grazie!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

e dalle mie poche nozioni so che ORDER BY ordina solo in modo alfabetico...
Ti sparo la prima cosa che mi č venuta in mente:
fare tante select, ognuna per la lettera desiderata, e poi unirle con
delle UNION?

 come si puo' fare?
Io farei una modifichina alla tabella ed aggiungerei un campo "order"
che assume il valore 10 se il tuo campo di ordinamento e' "M", 20 se "B" 
e cosi' via, poi ordini in base al tuo campo calcolato.
Davide
-- 
| You or I must yield up his life to Ahrimanes.  I would rather it were 
| you.  I should have no hesitation in sacrificing my own life to spare 
| yours, but we take stock next week, and it would not be fair on the
| company.   -- J. Wellington Wells 

> Io farei una modifichina alla tabella...
L'ordinamento M, B, W, ... č un esempio, quello deve essere personalizzabile
per ogni utente...
All'ipotesi dell'UNION non avevo pensato, non conoscevo questa possibilitą.
Se avete altri suggerimenti, anche con appunto aggiunta eventuale di campi,
sono ben accetti!
Grazie.


sono ben accetti!
Sempre rimanendo sulle UNION, la query la potresti comporre
dinamicamente in java con un loop sul vettore che conterrà le lettere
di cui sopra. Cioè, aggiungi alla stringa sql man mano i pezzi
riguardanti le singole select, con il where = array[indice], insomma,
una roba del genere (non ho idea di come si scrivi in java! ;-)

> Sempre rimanendo sulle UNION...
Provero' grazie!
...
Qualcuno ha mai sentito parlare di Java Blend... leggo che permette di
utilizzare un DB come un oggetto, e quindi senza popolare un ResultSet con i
risultati della query...
Qualcuno sa dirmi dove documentarmi meglio... sul sito della Sun mi
rimandano sempre a scaricare il pacchetto Studio...


>> Io farei una modifichina alla tabella...
D> L'ordinamento M, B, W, ... č un esempio, quello deve
D> essere personalizzabile per ogni utente...
Io continuerei sulla falsariga dell'idea di Davide,
se ogni utente deve poter personalizzare l'ordinamento
puoi pensare ad una tabella accessoria che per utente
(o per tipologia di ordinamento) specifica il valore
ed un valore numerico che indica come ordinare.
Qualche cosa del tipo:
OrdinamentoUtente(Utente, ValoreOriginale, Ordine)
('pippo', 'M', 1)
('pippo', 'B', 2)
('pippo', 'W', 3)
('pluto', 'M', 3)
('pluto', 'B', 1)
('pluto', 'W', 2)
Poi fai un'operazione di join tra la tua tabella
e questa nuova tabella per la colonna con il valore
originale, operi una restrizione per utente ed infine
ordini per la colonna ordine.
Ciao,
--
Gianluca Hotz - SQL Server MVP
http://italy.mvps.org
 - 
http://www.ghotz.com
http://www.ugiss.org
  - 
http://www.ugidotnet.org


prova  con
order by decode(nomecampo,"m",1,"b",2,"w",3,"a",4,"i",5)
(oracle)


Ciao David,
puoi creare una tabella di supporto che chiamiamo Ordinamento, questa
tabella avrà una sola riga e ad esempio 5 campi (da O1 a O5  tipo testo)  in
cui inserisci i caratteri dell'ordinamento
desiderato(O1="m",O2="b",O3="w",O4="a",O5="i")
Quindi la query
--------------------------------
SELECT Codice,Nome
FROM   Clienti,Ordinamento
ORDER BY IIF(LEFT(Nome,1)=O1,'1' & Nome,
                  IIF( LEFT(Nome,1)=O2,'2' & Nome,
                  IIF( LEFT(Nome,1)=O3,'3' & Nome,
                  IIF( LEFT(Nome,1)=O4,'4' & Nome,
                  IIF( LEFT(Nome,1)=O5,'5' & Nome,'Z'))))) & Nome
--------------------------------
Ciao Giorgio

 news:193Z204Z163Z16Y...@usenet.libero.it...
[CUT]
emm piccola correzione
--------------------------------
 SELECT Codice,Nome
 FROM   Clienti,Ordinamento
 ORDER BY IIF(LEFT(Nome,1)=O1,'1' ,
                     IIF( LEFT(Nome,1)=O2,'2',
                     IIF( LEFT(Nome,1)=O3,'3',
                     IIF( LEFT(Nome,1)=O4,'4',
                     IIF( LEFT(Nome,1)=O5,'5' ,'Z'))))) & Nome
 --------------------------------
Nome lo concateno alla fine e non è necessario in ogni IIF
ciao Giorgio

 ha scritto nel messaggio
news:193Z204Z163Z16Y...@usenet.libero.it...


 e dalle mie poche nozioni so che ORDER BY ordina solo in modo
alfabetico...
ordina per una funzione:
... order by iif(campo1,'m',1,2), iif(campo1, 'b',1,2) ...
o qualcosa del genere...
con un decode sarebbe molto piu' facile ma in access non c'e'