+ Rispondi alla Discussione
Risultati da 1 a 8 di 8

[SQL] Ordinare i record in base al confronto di due date

Ultimo Messaggio di paocavo il:
  1. #1
    User L'avatar di sherlock
    Data Registrazione
    Sep 2006
    Località
    Italia, Bologna
    Messaggi
    286

    [SQL] Ordinare i record in base al confronto di due date

    ciao a tutti!
    ho il problema di ordinare i dati provenienti da una query SQL in una tabella (...che fin qui sembra banale!), tuttavia (almeno a quanto so io!) non posso ordinarli direttamente dalla SELECT SQL perchè l'ordinamento si basa su un campo calcolato a partire dalla base dati.
    Mi spiego meglio, nella base dati ho il campo data inizio e data approvazione, quando effettuo la query in automatico la pagina asp calcola la data scadenza a partire dalla data inizio o dalla data approvazione + xx giorni. La tabella che ne risulta deve essere ordinata per data di scadenza!
    I dati della query sql li appoggio subito in un array per poter fare la paginazione dei risultati stessi. Ora non so come posso ordinare questa tabella!
    Aspetto soccorso!!!!!
    Grazie,

    Marco

  2. #2
    User L'avatar di icchese
    Data Registrazione
    Dec 2006
    Messaggi
    174
    o aggiungi un campo "data_scadenza" o riversi i risultati in una tabella temporanea e li riordini........

    sempre se ho capito bene il problema ....


  3. #3
    User L'avatar di sherlock
    Data Registrazione
    Sep 2006
    Località
    Italia, Bologna
    Messaggi
    286
    hai capito perfettamente e ti ringrazio del consiglio...volevo proprio evitare sia il campo data_scadenza (in quanto è un campo calcolato al volo) sia di dover riversare su un'altra tabella...
    ma in questa seconda ipotesi tu come faresti?
    grazie!

    Marco

  4. #4
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Codice:
    select (data_inizio + 20) AS Scadenza from tabella
    order by (data_inizio + 20) DESC;
    Dovrebbe funzionare...


  5. #5
    User L'avatar di sherlock
    Data Registrazione
    Sep 2006
    Località
    Italia, Bologna
    Messaggi
    286
    ciao Paolo!
    grazie per il suggerimento...il problema è che, oltre al problema del +xx giorni, l'ordinamento va fatto su due colonne congiuntamente in questo modo:
    ID COLONNA1 COLONNA2
    1 01/01/2007
    2 05/04/2007
    3 02/03/2007 01/11/2007
    4 31/12/2006

    il corretto ordine è: 3,4,1,2!
    so che è un gran caos...
    grazie!!

    Marco

  6. #6
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Bel casino!

    Comunque la soluzione esiste ed è questa (l'ho testata):

    Codice:
    SELECT tbldate.id_campo, 
               IIf(not IsNull([data2] and data1>data2),[data2]+20,[data1]+20) AS Scadenza
    FROM tbldate
    ORDER BY IIf(not IsNull([data2] and data1>data2),[data2]+20,[data1]+20);
    Tutto questo nell'ipotesi che:

    1) Data1 (cioè colonna1) sia sempre NOT NULL e Data2 può assumere valori NULL
    2) Se Data2 esiste allora deve essere data1>data2
    3) Il time-out della scadenza sia di 20 giorni.

    Come ho già detto in post precedenti all'interno dell'SQL di Access si possono fare cose molto potenti, basta studiare tutte le funzioni elencate nel generatore di espressioni attivabile cliccando sulla "bacchetta magica" che appare nella barra degli strumenti di "Visualizzazione struttura della Query".

    Suggerimento: Per velocizzare l'esecuzione della query verifica che su Data1 e Data2 sino entrambi campi che accettano valori Null e che siano indicizzati (Valori duplicati: si!)

    PS: C'è un errore nella tabella che hai presentato, probabilmente il valore di colonna2 del terzo record è 01/11/2006 altrimenti non ha senso l'ordine: 3,4,1,2

    Ultima modifica di paocavo; 05-04-07 alle 13:07

  7. #7
    User L'avatar di sherlock
    Data Registrazione
    Sep 2006
    Località
    Italia, Bologna
    Messaggi
    286
    ...in effetti era 2006!!!
    grazie Paolo, ti adoro!

    funziona a meraviglia...ora per le prossime provo anch'io con la bacchettina magica di Access!!

    Marco

  8. #8
    Moderatore L'avatar di paocavo
    Data Registrazione
    Mar 2006
    Località
    Lecce, Italy
    Messaggi
    1,016
    Aggiungi paocavo su Facebook Aggiungi paocavo su Linkedin
    Citazione Originariamente Scritto da sherlock Visualizza Messaggio
    ...in effetti era 2006!!!
    grazie Paolo, ti adoro!
    esagerato!...

    funziona a meraviglia...ora per le prossime provo anch'io con la bacchettina magica di Access!!
    ...ecco bravo!


+ Rispondi alla Discussione

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.