Visualizzazione dei risultati da 1 a 6 su 6

Discussione: ORDER BY condizionale

  1. #1

    ORDER BY condizionale

    Ho una query su Access che mi deve ordinare i post di un forum per ultimo post.

    Per come è stato progettato il DB (maluccio ) la data del post può essere:

    - O nel campo DataCreazione
    - O nel campo UltimoPost

    della tabella "Messaggi"

    Se metto un semplice "ORDER BY UltimoPost, DataCreazione" funziona ..... ma se il campo UltimoPost (nei topic dove non ci sono risposte) è nullo crea problemi.

    Come posso fare a dire all'SQL di ordinarmi i topic per UltimoPost solo se questo è diverso da NULL, altrimenti prendere di conto la data?

    Io non ho idea di come fare.

    Mi aiutate?

    Grazie infinite

  2. #2
    non credo si possa


    non potresti mettere la data di creazione del messaggio = alla data dell'ultimo post se questa è null?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3

    Re: ORDER BY condizionale

    Originariamente inviato da pictor
    Ho una query su Access che mi deve ordinare i post di un forum per ultimo post.
    ..................
    Come posso fare a dire all'SQL di ordinarmi i topic per UltimoPost solo se questo è diverso da NULL, altrimenti prendere di conto la data?
    ........
    Grazie infinite
    pova con IIF che, se ricordo bene, dovrebbe essere vista
    anche dal di fuori di Access

    codice:
    ...ORDER BY IIF(ISNULL(UltimoPost),DataCreazione,UltimoPost)

  4. #4
    Utente di HTML.it L'avatar di yro
    Registrato dal
    Sep 2003
    Messaggi
    2,916
    con un record in + ...
    estrai il record, e fai un if in base al risultato...

    una cosa del genere

    codice:
    if campo1 = "" then
    sql ordinata per campo2
    else
    sql ordinata per campo1
    end if
    non è per niente performante, ma se proprio lo devi fare...
    E se avessi il dono della profezia e conoscessi tutti i misteri e tutta la scienza, e possedessi la pienezza della fede così da trasportare le montagne, ma non avessi la carità, non sono nulla.

  5. #5
    con access l'unica è fare due query

  6. #6
    come più o meno suggerito da sspintux, prova questa:

    codice:
    SELECT 
        id, 
        topic, 
        dataTopic, 
        dataUltimo, 
        IIF(isNull(dataUltimo), dataTopic, dataUltimo) AS ultima 
    FROM 
        [tuaTabella] 
    ORDER BY 5 ASC

    xxx

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 © 2026 vBulletin Solutions, Inc. All rights reserved.