Attiva Web - Realizzazione siti internet, ecommerce

MySQL - è possibile utilizzare un alias nella clausola where?

    • Per esigenze di lavoro è inevitabile l'uso degli alias MySQL, a volte oltre agli alias nasce la necessità di utilizzare l'alias appena creato nella clausa where, cosa di per sè NON possibile per come è strutturato MySQL, oggi vi mostrerò come ovviare a questo problema in modo rapido e semplice.

      Prendiamo ad esempio una query semplice che fa uso degli alias:

       select date_format(data_ins, '%d-%m') as data_ev
       from news where calendario = 1 order by data_ev

      estraggo cioè solo il giorno e il mese da una tabella dove il campo calendario è uguale a 1 e ordino tutto per l'alias. Volendo ora estrarre soltanto i dati di un determinato giorno/mese, verrebbe da pensare, aggiungo un and alla clausola where con data_ev = 'giorno-mese', a questo punto però avrete un errore MySQL.

      Per ovviare a questo incoveniente ci viene in aiuto l'istruzione HAVING, da far seguire subito dopo il WHERE, la nostra query quindi diventerebbe:

       select date_format(data_ins, '%d-%m') as data_ev
       from news where calendario = 1 having data_ev = '04-09' order by data_ev

      così facendo abbiamo creato un alias con giorno e mese e tramite l'HAVING ho ristretto il campo di ricerca senza problemi wink

      Alla prossima.

      Francesco // 05-09-2014 // MySQL

    Lascia un commento

    Invia commento


    ATTENZIONE: il tuo commento verrà prima moderato e se ritenuto idoneo sarà pubblicato