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

    [SQL] ordinamento campi

    se ho due campi in mySQL data_pubblicazione e data_evento entrambi formato DATE, come faccio a dirgli di ordinare in modo decrescente ma considerando il campo come unico?
    non so se mi sono spiegato

    supponiamo che io abbia una tabella in mySQL aventi le seguenti coppie di date:
    codice:
    +-------------------------+
    |  DATA_P    |    DATA_E   |
    |------------+--------------|
    | 23/10/2006 |    NULL      |
    |  22/10/2006|     NULL     |
    | 25/10/2006 | 27/10/2006 |
    +-------------------------+
    io devo avere come ordinamento il 3°, poi il 1° e infine il 2°...praticamente deve essere un ordine decrescnete tenendo come valido il campo data_e quando questo è presente, altrimenti il campo data_p.

    Il campo data_p non è MAI nullo, mentre data_e potrebbe esserlo.


    Spero di essermi spiegato...


    lo posso fare con una query o devo farlo integrandolo al php?




    grazie!
    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

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    select *,if(data_e <=> NULL,data_p,data_e) as ordine
    from tabella
    order by ordine desc

  3. #3
    Originariamente inviato da nicola75ss
    codice:
    select *, if(data_e <=> NULL,data_p, data_e) as ordine
    from tabella
    order by ordine desc
    se NULL allora e' meglio sia.... "data_e IS NULL"

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

  4. #4
    grazie mille ad entrambi! funziona alla perfezione!
    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

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da piero.mac
    se NULL allora e' meglio sia.... "data_e IS NULL"
    Scusa Piero, mi spieghi la differenza tra le due forme?
    I null sono sempre ostici.

  6. #6
    Originariamente inviato da nicola75ss
    Scusa Piero, mi spieghi la differenza tra le due forme?
    I null sono sempre ostici.
    mettila cosi':

    NULL non esiste. Non e' ne maggiore, ne minore o uguale a zero o di empty. Non e' ne negativo ne positivo ma manco neutro, ne pari ne dispari.... ecc. Non esiste. Quindi se non esiste non puo' essere confrontato se non con value IS / IS NOT NULL.

    L'incidenza piu' pesante e sovente equivocata e' che un campo NULL e' tale solo se e' dichiarato NULL ma un campo dichiarato NULL e valorizzato vuoto NON e' piu' NULL ma "an empty field".

    Quale la differenza?

    Una per tutte ... Nel caso dei raggruppamenti un campo NULL viene ignorato, se tu fai una media con AVG() NON viene contato, mentre se fosse vuoto (sia dichiarato NULL che NOT NULL) invece si.

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

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ti ringrazio. Sempre chiaro e gentilissimo.

  8. #8
    ma questo funziona solo se i campi nel database vengono dichiarati campi DATA? nel mio caso devo ordinare "da + recente" a "piu vekkio"

    20.11.2000 (campo ore) 23:56
    20.11.2000 (campo ore) 23:54
    19.11.2000 (campo ore) 01:55

    eccc... ho fatto cosi

    $query = mysql_query("SELECT * FROM TABELLA WHERE id!='1' ORDER BY ultima_data,ultima_ora DESC LIMIT $primo, $per_page");

    il problema è che non me lo fa... mi sballa tutto come vuole anke mettessi ASC ...

    premetto ke i record sono suddivisi su pagine..

  9. #9
    20.11.2000 (campo ore) 23:56
    20.11.2000 (campo ore) 23:54
    19.11.2000 (campo ore) 01:55

    quella NON e' una data ma una stringa. Viene ordinata secondo il valore ascii e non secondo il valore della data.

    usa il formato data corretto per mysql

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

  10. #10
    capisco.. il mio mysql mi impone una data del tipo 0000-00-00 e 00:00:00... se mi dici ke non posso impostarli una data predefinita 00.00.000 e 00:00 io la smetto qui =)

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.