Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    MYSQL ORDER BY due parametri come uno

    Mi rendo conto che il titolo sia un po' poco preciso. Avrei questa esigenza:

    Ho un DB organizzato piu` o meno cosi`:

    ID auto increment
    data1 datetime
    date2 datetime

    Ora, e` nata l'esigenza di ordinare i risultati non piu` come

    ORDER BY data1 DESC, data2 DESC

    ma solo attraverso un parametro, ovvero, se data1 non c'e` prendi data2 altrimenti data1 tipo

    ORDER BY
    (if !data1
    data1 = data2) data2 DESC

    Ora faccio questo via multisort una volta arrivato il risultato, ma mi chiedevo se qualcuno ha idea di come ottenere la stessa cosa direttamente in MYSQL.
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  2. #2
    Ci sono:

    codice:
    SELECT * FROM tbl ORDER BY IF(date1,date1,date2) DESC
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    40
    Così, però, ordina secondo data2 non soltanto se data1 è inesistente, ma anche se data1 esiste ma vale 0.

  4. #4
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    il primo order by va bene anche nel secondo caso. E' sufficiente che data1 sia null

  5. #5
    Originariamente inviato da slurpolo
    Così, però, ordina secondo data2 non soltanto se data1 è inesistente, ma anche se data1 esiste ma vale 0.
    Pare di no, specificando che si tratta di un campo datetime credo che il default '0000-00-00 00:00:00' equivalga a NULL per varchar. Vedi come vengono ordinati questi

    codice:
    id 	data1 	                data2
    3 	0000-00-00 00:00:00 	2009-02-21 12:26:45
    1	2009-02-20 14:55:56 	2009-02-17 21:28:52
    2 	0000-00-00 00:00:00 	2009-02-19 14:24:40
    se ordinasse per data2 DESC l'ordine dovrebbe essere 3,2,1 per data1 DESC 1,3,2

    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

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.