Salve a tutti,
dovrei ottenere i dati da una select ordinati,
tali dati sono tutti del tipo:
WW2
WW5
WW1
WW3
WW10
ecc..
quindi con prefisso testuale WW e suffisso numerico.
Come faccio ad ordinarli con suffisso decrescente??
Salve a tutti,
dovrei ottenere i dati da una select ordinati,
tali dati sono tutti del tipo:
WW2
WW5
WW1
WW3
WW10
ecc..
quindi con prefisso testuale WW e suffisso numerico.
Come faccio ad ordinarli con suffisso decrescente??
per select intendi una query?
se si
SELECT tuo_campo FROM tua_tabella ORDER BY tuo_campo DESC
http://www.mcganass.com
troppo semplice èhh!
così otterrei che WW1 > WW10
mi serve qualche funzione in grado di estrarre solo
la parte numerica ed ordinarla.
prima fai la select, eppoi ai risultati, che sono gia' ordinati come vuoi ci levi il www con : http://it.php.net/manual/it/function.substr.phpmi serve qualche funzione in grado di estrarre solo
http://www.mcganass.com
ok,
ma il problema è che non vengono ordinate correttamente
cioè
WW9
WW8
WW1
WW10
WW14
questo è l'ordinamento decrescente che ottengo con un semplice
ORDER BY nome_campo DESC
invece a me serve:
WW14
WW10
WW9
...
ok??
ti vengono ordinate giuste invece
non dimenticare che per quanto potente performante e di ultima generazione il pc resta sempre un pc e capisce solo 0 e 1
per cui per lui
10 viene prima di 1
non c'e' ne'...puoi risolvere la cosa a monte e prima di inserire il valore WWW1 nel db, manipolare la stringa e inserire WWW01
http://www.mcganass.com
Ti posso garantire che è come ho detto in precedenza,
prova a creare una tab, inserire valori misti e chiedi l'ordinamento vedrai che accade ciò che ti ho detto.
Comunque ho risolto in questo modo:
Grazie lo stesso.codice:SELECT nome FROM tab ORDER BY CAST( SUBSTRING( nome, 4 ) AS UNSIGNED ) DESC![]()
si si ma l'ordinamento che ti dava era corretto! perché ordinava tenendo conto che il campo è una stringa, e viene trattato da tale, dove 10 è minore di di 2Originariamente inviato da TommyGun
Ti posso garantire che è come ho detto in precedenza,
prova a creare una tab, inserire valori misti e chiedi l'ordinamento vedrai che accade ciò che ti ho detto.
bravo che hai trovato la soluzione da solo, sicuramente la terrai a menteOriginariamente inviato da TommyGun
Comunque ho risolto in questo modo:
Grazie lo stesso.codice:SELECT nome FROM tab ORDER BY CAST( SUBSTRING( nome, 4 ) AS UNSIGNED ) DESC![]()
![]()
p.s. hai notato tu stesso che per ottenere l'ordinamento che volevi hai dovuto convertire il dato in un INTEGER...
Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone