Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [MySql] Problema con order by e null

    Salve a tutti, ho una tabella con un campo nome che può essere vuoto, null oppure pieno.
    Vorrei fare un select per visualizzare prima i campi non vuoti in ordine alfabetico (0-9)(a-z) e poi quelli vuoti o null.
    Provo a fare così:

    SELECT * FROM TABELLA ORDER BY campo asc ,ISNULL(campo) asc

    ma mi ritrovo prima i null e poi in ordine alfabetico quelli pieni

    Se invece faccio così:

    SELECT * FROM TABELLA ORDER BY campo desc ,ISNULL(campo) asc

    mi ritrovo prima quelli pieni MA in ordine Z-A e poi quelli null.

    Mi date una mano?
    Grazie.
    What is the |\/|atrix?

  2. #2
    fai una query con UNION con selezione e ordinamento per quello che ti serve.
    codice:
    select * from tabella
    where campo > char(47)
    order by campo asc
    union
    select * from tabella
    where campo = ''        // ti trova i vuoti
    union
    select * from tabella
    where campo IS NULL

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Niente da fare!
    #1221 - Incorrect usage of UNION and ORDER BY
    Qualche altra idea?
    What is the |\/|atrix?

  4. #4
    prova mettendo le SELECT tra parentesi tonde
    (SELECT ... ) UNION (SELECT...)

  5. #5
    Esatto .... ci vogliono per via dell'order by.... dimenticate..

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Niente da fare, l'ordinamento non viene fatto per campo asc ma per id asc dove il campo non è vuoto, subito dopo lo stesso viene fatto per i campi null, sempre id asc...
    A me serviva per campo asc...
    What is the |\/|atrix?

  7. #7
    Originariamente inviato da |\/|atrix
    Niente da fare, l'ordinamento non viene fatto per campo asc ma per id asc dove il campo non è vuoto, subito dopo lo stesso viene fatto per i campi null, sempre id asc...
    A me serviva per campo asc...
    Faresti prima a postare la query che esegui....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    (select * from tabella
    where tipo=1 AND descrizione != ''
    order by descrizione asc)
    union
    (select * from tabella
    where tipo=1 AND descrizione = '')
    union
    (select * from tabella
    where tipo=1 AND descrizione IS NULL)
    What is the |\/|atrix?

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    SELECT *, IFNULL(campo,3,IF(campo='',2,1)) as ordine FROM TABELLA ORDER BY ordine, campo

  10. #10
    Originariamente inviato da luca200
    SELECT *, IFNULL(campo,3,IF(campo='',2,1)) as ordine FROM TABELLA ORDER BY ordine, campo
    Ricevo questo errore:
    #1064 - 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 ' IF( descrizione = '' , 2 , 1 ) ) as ordine FROM prova ORDER BY ordine , descrizione
    LIMIT' at line 1
    What is the |\/|atrix?

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.