Scusa, mi rendo conto che hai risolto (e quando uno risolve un problema preferisce accantonarlo) ma non pensi che correggere il codice che hai postato in precedenza sia preferibile?
Hai provato:
codice:
SELECT ID, Articolo, DataScadenza, DATEDIFF(DataScadenza, NOW()) AS Giorni_Residui
FROM magazine
WHERE $where
ORDER BY 2 DESC
Solo qualche dubbio:
1) Non ti conviene usare "ORDER BY 2" usa sempre il nome del campo così se (per qualsiasi motivo) modifichi la query non pregiudichi l'ordinamento;
2) Non per farmi gli affari tuoi, ma non ti converrebbe ordinare per Giorni_Residui (ASC) così da avere le scadenze dalla più prossima alla più lontana?
3) Se vuoi solo le scadenze future devi aggiungere (prima di ORDER BY) :
codice:
GROUP BY ID HAVING Giorni_Residui >= 0
N.B. Ho usato ID per evitare un raggruppamento vero ed ottenere tutte le righe che rispettassero la condizione in HAVING supponendo che ID sia la chiave primaria ma, se così non fosse, usa il campo chiave primaria (funziona anche se non è indicato nelle colonne da selezionare).
Riepilogando, potresti usare:
codice:
SELECT ID, Articolo, DataScadenza, DATEDIFF(DataScadenza, NOW()) AS Giorni_Residui
FROM magazine
WHERE $where
GROUP BY ID HAVING Giorni_Residui >= 0
ORDER BY Giorni_Residui ASC
Spero di averti dato qualche spunto di riflessione e ti auguro Buon 2016
P.S. Tanti auguri anche ad Optime ed a tutti i membri e lettori di queasto forum.