Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1

    Ordinare alfabeticamente "speciale"

    Avevo questa stringa:
    Codice PHP:
        $sql 'SELECT a.aid, a.title, a.description, category, visibility, filepath, ' 'filename, url_prefix, pwidth, pheight ' 'FROM ' $CONFIG['TABLE_ALBUMS'] . ' as a ' 'LEFT JOIN ' $CONFIG['TABLE_PICTURES'] . ' as p ' 'ON a.thumb=p.pid ' 'WHERE category=' $cat $album_filter ' ORDER BY a.pos ' $limit
    Ho sostituito
    Codice PHP:
    ' ORDER BY a.pos ' 
    con
    Codice PHP:
    ' ORDER BY a.title ' 
    e in questo modo gli elementi in questione vengono ordinati alfabeticamente.
    Però il corretto ordine per i caratteri alfanumerici fa in modo che, per esempio, avendo questi nomi:
    10, 11, 12, 100
    l'ordine sia
    10, 100, 11, 12.
    Volevo sapere se ci fosse un modo per far ordinare alfabeticamente nel modo 10,11,12,100 e non quello attuale che mette il 100 davanti all'11...
    Mi hanno detto di provare a sostituire
    Codice PHP:
    ' ORDER BY a.title ' 
    con questo:
    Codice PHP:
    ' ORDER BY CAST(a.title AS INTEGER) ' 
    Ma ottengo questo errore:
    mySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTEGER) LIMIT 24,11' at line 1
    La mia versione di mysql se può essere utile, è 4.1.20.
    Spero che possiate aiutarmi, grazie.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova così
    ORDER BY CAST(a.title AS UNSIGNED)

  3. #3
    Prova con
    Codice PHP:
     ORDER BY CAST(a.title AS SIGNED

  4. #4
    Grazie.
    Però avete detto due cose opposte... chi ha ragione?
    Vabbeh ora le provo tutte e due e vi dico XD

  5. #5
    Ho provato... nessuna delle due da errori, credo che diano lo stesso risultato... ma non quello che voglio io: gli elementi nè vengono ordinati alfabeticamente, e nè di conseguenza alfabeticamente come voglio io...

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Posta qualche record di esempio del campo title e ciò che vuoi ottenere.

  7. #7
    Si tratta di ordinare alfabeticamente gli album contenuti nelle categorie di una galleria coppermine. Per il record... puoi spiegarmi precisamente cosa dovrei fare? "^_^

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Mi spiace ma non ti seguo. All'inizio dicevi che avendo record come
    10, 11, 12, 100
    volevi che l'ordine fosse
    10,11,12,100
    e non
    10, 100, 11, 12.
    il cast fa esattamente quello. Se poi il tuo problema è un altro non l'ho capito.

  9. #9
    Non sono esperto di mysql quindi il record non so esattamente cosa sia.
    Comunque ho degli album intitolati
    Untitled - Set #1
    Untitled - Set #2
    Untitled - Set #3
    Fino ad arrivare a
    Untitled - Set #13
    Con
    ORDER BY a.title
    L'ordine è:
    Untitled - Set #1
    Untitled - Set #10
    Untitled - Set #12
    Untitled - Set #11
    Untitled - Set #13
    Untitled - Set #2
    Untitled - Set #3
    Untitled - Set #4
    Untitled - Set #5
    Untitled - Set #6
    Untitled - Set #7
    Untitled - Set #8
    Untitled - Set #9
    Con
    ORDER BY CAST(a.title AS UNSIGNED)
    Il risultato è lo stesso di ORDER BY a.pos, cioè l'ordine in base alla data di creazione dell'album.
    Il risultato di ORDER BY CAST(a.title AS SIGNED) è lo stesso di ORDER BY CAST(a.title AS UNSIGNED)
    Non so...
    p.s. so che potrei cambiare il titolo degli album a Set #001, 002 etc. ma gli album non sono 13, ce ne sono molti di più...

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    prova così

    select *,substring_index(title,'#',1) as nominale,
    cast(substring_index(title,'#',-1) as unsigned) as numero
    from tabella order by nominale,numero

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.